letter_recognition.data 데이터 세트를 사용하여 OpenCV-Python에서 간단한 숫자 인식을 구현하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-08 07:19:02
원래의
359명이 탐색했습니다.

How to Implement Simple Digit Recognition in OpenCV-Python using the letter_recognition.data Dataset?

OpenCV-Python의 단순 숫자 인식 OCR

질문 1

letter_recognition.data 파일은 20,000개의 손글씨 샘플이 포함된 데이터세트입니다. 각 문자는 16개의 특징으로 표시됩니다. 자신의 데이터세트에서 유사한 파일을 만들려면 다음 단계를 따르세요.

  1. 각 문자 이미지에서 픽셀 값을 추출합니다.
  2. 픽셀 값을 배열에 저장합니다.
  3. 각 문자의 레이블을 포함하는 해당 배열을 만듭니다.
  4. NumPy의 savetxt() 함수를 사용하여 두 배열을 모두 텍스트 파일에 저장합니다.

질문 2

results.reval()은 OpenCV KNearest 클래스의 find_nearest() 함수에서 반환된 출력 배열입니다. 여기에는 주어진 샘플에 대한 예측 레이블이 포함되어 있습니다.

질문 3

letter_recognition.data 파일을 사용하여 간단한 숫자 인식 도구를 작성하려면 다음 단계를 따르세요.

교육:

  1. letter_recognition.data 파일을 로드합니다.
  2. 파일에서 샘플과 응답을 추출합니다.
  3. KNearest 분류기.
  4. 샘플과 응답을 사용하여 분류기를 훈련합니다.

테스트:

  1. 숫자가 포함된 이미지 로드
  2. 이미지를 전처리하여 개별 숫자를 추출합니다.
  3. 각 숫자에서 픽셀 값을 추출하여 배열에 저장합니다.
  4. 훈련된 분류기를 사용하여 각 숫자에 대한 레이블을 지정합니다.
  5. 인식된 숫자를 이미지에 표시합니다.

아래는 학습 및 테스트 프로세스를 보여주는 예제 코드입니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!