我正在嘗試在 OpenCV-Python (cv2) 中實現“數字識別 OCR”。它僅用於學習目的。我想學習 OpenCV 中的 KNearest 和 SVM 功能。
我有每個數字的 100 個樣本(即圖像)。我想和他們一起訓練。
OpenCV 示例附帶了一個示例 letter_recog.py
。但是我仍然不知道如何使用它。我不明白樣本、響應等是什麼。另外,它首先加載了一個 txt 文件,我首先不明白。
後來稍微搜索了一下,在cpp示例中找到了一個letter_recognition.data,我用它,在letter_recog.py的模型中做了一個cv2.KNearest的代碼(只是為了測試):
import numpy as np import cv2 fn = "letter-recognition.data" a = np.loadtxt(fn, np.float32, delimiter=",", converters={ 0 : lambda ch : ord(ch)- ord("A") }) 樣本,響應 = a[:,1:], a[:,0] 模型 = cv2.KNearest() retval = model.train(samples,responses) retval, results, neigh_resp, dists = model.find_nearest(samples, k = 10) print results.ravel()
它給了我一個大小為 20000 的數組,我不明白它是什麼。
問題:
1) 什麼是 letter_recognition.data 文件?如何從我自己的數據集構建該文件?
2) results.reval()
表示什麼?
3) 我們如何使用 letter_recognition.data 文件(KNearest 或 SVM)編寫一個簡單的數字識別工具?