Heim >Backend-Entwicklung >Python-Tutorial >Wie implementiert man eine einfache Ziffernerkennung in OpenCV-Python mithilfe des Datensatzes „letter_recognition.data'?
Die Datei „letter_recognition.data“ ist ein Datensatz, der 20.000 Beispiele handgeschriebener Briefe enthält. wobei jeder Buchstabe durch 16 Merkmale dargestellt wird. Um eine ähnliche Datei aus Ihrem eigenen Datensatz zu erstellen, können Sie die folgenden Schritte ausführen:
results.reval() ist das Ausgabearray, das von der Funktion find_nearest() der KNearest-Klasse von OpenCV zurückgegeben wird. Es enthält die vorhergesagten Beschriftungen für die angegebenen Beispiele.
Um ein einfaches Ziffernerkennungstool mit der Datei „letter_recognition.data“ zu schreiben, können Sie die folgenden Schritte ausführen:
Training:
Testen:
Unten finden Sie einen Beispielcode, der dies demonstriert der Trainings- und Testprozess:
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)
Indem Sie diese Schritte befolgen und den KNearest-Klassifikator in OpenCV nutzen, können Sie einen erstellen Grundlegendes Ziffernerkennungstool, das für komplexere Ziffernerkennungsaufgaben weiter verbessert werden kann.
Das obige ist der detaillierte Inhalt vonWie implementiert man eine einfache Ziffernerkennung in OpenCV-Python mithilfe des Datensatzes „letter_recognition.data'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!