OpenCV-Python 中的簡單數字識別 OCR

| | | | | | | | | | | | | | | |

我正在嘗試在 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)編寫一個簡單的數字識別工具?