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 中国語 Web サイトの他の関連記事を参照してください。