在OpenCV裡用kNN實現手寫數字識別

2021-09-29 04:11:07 字數 462 閱讀 5466

本文裡將要學習用knn來構造乙個ocr應用,實現手寫數字的識別。為了實現這個需求,我們需要一些訓練資料和測試資料,在opencv裡有乙個手寫數字的digits.png,這個裡包含有5000個手寫字型的數字,每個數字有500個,每個數字大小為20x20個畫素。如下圖所示:

因此,首先就是把5000個數字進行分割,每個數字從二維展開成400個畫素,這樣構造出我們特徵集合,也是非常最簡單的特徵集合。接著把每個數字前面250個當作訓練資料,後面250個當作測試資料。

為了把這個大圖進行拆分,先要進行行拆分,使用numpy裡的函式vsplit,它的作用如下:

numpy.vsplit(ary, indices_or_sections)

第乙個引數是輸入要拆分的陣列,第二個引數是拆分的大小。

>>>

在OpenCV裡用clipLine裁剪直線段

如果你學習過圖形學,就會對這個裁剪演算法有深入的了解,比如sutherland cohen演算法大體的意思如下 第一步,判定 1 完全在視窗內的直線段,稱為完全可見的線段,如ab。保留著 2 完全在視窗外的線段,稱為完全不可見線段,如cd。拋棄掉 第二步,處理不能斷定為完全可見或完全不可見的線段,如...

在OpenCV裡實現開運算

前面學習腐蝕和膨脹演算法,並且深刻地認識到它們的特性以及作用。如果由這兩種組合出來的運算又有什麼樣的不同呢?比如乙個影象先腐蝕後膨脹的操作,會有什麼結果呢?因為腐蝕是把白色變小,膨脹又是把白色變大,是否會保持原圖不變呢?帶著這些問題來研究一下先腐蝕後膨脹的演算法,我們把這樣的演算法叫做開運算,在數學...

在OpenCV裡實現傅利葉變換

要學習傅利葉變換,大家要先回去看一下數學書,因為它畢竟是數學的概念,這樣才會更好地理解。首先來看一張圖,就基本理解傅利葉變換 在這張裡,就可以看到同一組訊號在兩個不同方向上的成像,在時域裡看到的是方波,在頻域裡看到是不同頻率的幅度高度。其實這兩個影象都是表示相同的東西,只是看的角度不一樣。傅利葉變換...