Le fichier letter_recognition.data est un ensemble de données qui contient 20 000 échantillons de lettres manuscrites, avec chaque lettre représentée par 16 caractéristiques. Pour créer un fichier similaire à partir de votre propre ensemble de données, vous pouvez suivre ces étapes :
results.reval() est le tableau de sortie renvoyé par la fonction find_nearest() de la classe KNearest d'OpenCV. Il contient les étiquettes prédites pour les échantillons donnés.
Pour écrire un outil simple de reconnaissance de chiffres à l'aide du fichier letter_recognition.data, vous pouvez suivre ces étapes :
Formation :
Test :
Vous trouverez ci-dessous un exemple de code qui démontre le processus de formation et de test :
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)
En suivant ces étapes et en tirant parti du classificateur KNearest dans OpenCV, vous pouvez créer un outil de reconnaissance de chiffres de base qui peut être encore amélioré pour des tâches de reconnaissance de chiffres plus complexes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!