牛奶盒喷码字符识别(基于opencv)————(三)字符的识别
牛奶盒噴碼字符識(shí)別(基于opencv)————(三)字符的識(shí)別
- 更新
- 效果
- 方法
- 1.制作模板
- 2.讀入模板,
- 3.讀入分割出來(lái)的圖片
- 4.逐一匹配
- 不足
更新
2018.11.16:
效果
先看效果吧。
效果極佳,
方法
1.制作模板
將分割出來(lái)的數(shù)字,效果很不錯(cuò)的當(dāng)作我們的模板,后面用作匹配,C L :都當(dāng)作數(shù)字處理
2.讀入模板,
這里我通過(guò)建立三維數(shù)組,采用for循環(huán)讀入
注意,讀取時(shí)候,要加0參數(shù),不然會(huì)以三通道方式讀取。
3.讀入分割出來(lái)的圖片
將上一節(jié)分割出來(lái)的20張圖片,都讀入進(jìn)去,同樣構(gòu)建三維數(shù)組,for循環(huán)讀入
img=np.zeros([dsize,dsize,20],np.uint8) for i in range(20):# print(i)img[:,:,i] = cv2.imread(root + "%d.png" %i, 0) #記住參數(shù) 0 #cv2.imshow("s"+ "%d" %i, img[:,:,i])4.逐一匹配
采用嵌套for循環(huán),使得每個(gè)分割的圖像與模板匹配,算出來(lái)的rez值最大的,就是最有可能的字符,這里采用cv2.TM_CCOEFF_NORMED標(biāo)準(zhǔn)相關(guān)匹配方法,這是 OpenCV 支持的最復(fù)雜的一種相似度算法。這里的相關(guān)運(yùn)算就是數(shù)理統(tǒng)計(jì)學(xué)科的相關(guān)系數(shù)計(jì)算方法。
總之,越復(fù)雜,占用cpu越多,越耗時(shí),但是越準(zhǔn)確。
看看誰(shuí)最大,使用np.argmax直接得出答案,在等于10,11,12加入判斷即可
效果如頂部那樣,統(tǒng)計(jì)了50張圖,也就是1000個(gè)數(shù)字,準(zhǔn)確率為95.2%
不足
當(dāng)然算法還有一些不足之處:
比如:
1.如果字符不為20的話,算法會(huì)出錯(cuò),只不過(guò)我的數(shù)據(jù)集90%的圖都是20個(gè)字符的,要改進(jìn),可以使用文件操作相關(guān)函數(shù)
2.對(duì)于0和8,或扭曲數(shù)字,很容易出錯(cuò),有機(jī)會(huì)我會(huì)嘗試卷積神經(jīng)網(wǎng)絡(luò)。
3.對(duì)于一些扭曲的圖片,兩行直接沒(méi)有白色像素,有很小幾率會(huì)無(wú)法切割行。
總之,這只是一門(mén)選修課,我也不愿太費(fèi)心思去繼續(xù)改進(jìn),有什么問(wèn)題可以評(píng)論區(qū)交流.
等結(jié)課后公布完整代碼,供大家學(xué)習(xí)交流。
總結(jié)
以上是生活随笔為你收集整理的牛奶盒喷码字符识别(基于opencv)————(三)字符的识别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Panabit应用层流量管理系统
- 下一篇: nxlog以syslog方式发送日志