letter_recognition.data 파일은 20,000개의 손글씨 샘플이 포함된 데이터세트입니다. 각 문자는 16개의 특징으로 표시됩니다. 자신의 데이터세트에서 유사한 파일을 만들려면 다음 단계를 따르세요.
results.reval()은 OpenCV KNearest 클래스의 find_nearest() 함수에서 반환된 출력 배열입니다. 여기에는 주어진 샘플에 대한 예측 레이블이 포함되어 있습니다.
letter_recognition.data 파일을 사용하여 간단한 숫자 인식 도구를 작성하려면 다음 단계를 따르세요.
교육:
테스트:
아래는 학습 및 테스트 프로세스를 보여주는 예제 코드입니다.
import numpy as np import cv2 # Load training data samples = np.loadtxt('letter_recognition.data', np.float32, delimiter=',', converters={0: lambda ch: ord(ch) - ord('A')}) responses = samples[:, 0] samples = samples[:, 1:] # Create KNearest classifier model = cv2.KNearest() # Train the classifier model.train(samples, responses) # Load test image test_image = cv2.imread('test_image.png') # Preprocess the image gray = cv2.cvtColor(test_image, cv2.COLOR_BGR2GRAY) thresh = cv2.adaptiveThreshold(gray, 255, 1, 1, 11, 2) # Extract digits contours, hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) digits = [] for cnt in contours: if cv2.contourArea(cnt) > 50: [x, y, w, h] = cv2.boundingRect(cnt) roi = thresh[y:y + h, x:x + w] roismall = cv2.resize(roi, (10, 10)) digits.append(roismall) # Predict labels for digits results = model.find_nearest(np.array(digits), 10) labels = [chr(ch + ord('A')) for ch in results[0]] # Display recognized digits on the image for i, label in enumerate(labels): cv2.putText(test_image, str(label), (digits[i][0], digits[i][1]), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0)) cv2.imshow('Recognized Digits', test_image) cv2.waitKey(0)
다음 단계를 수행하고 OpenCV의 KNearest 분류자를 활용하면 보다 복잡한 숫자 인식 작업을 위해 더욱 개선할 수 있는 기본 숫자 인식 도구를 만들 수 있습니다.
위 내용은 letter_recognition.data 데이터 세트를 사용하여 OpenCV-Python에서 간단한 숫자 인식을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!