python計算機視覺opencv卡號識別示例詳解
模板圖片如下:
需識別的圖片如下:
一、模板預(yù)處理
1.將模板設(shè)置為二值圖
2.檢測模板的輪廓
3.對模板輪廓排序,并將數(shù)字和輪廓一一對應(yīng),以字典存儲
排序的函數(shù)如下:
排序并存儲:
4.備注
①每一個數(shù)字對應(yīng)的是二值圖截出來的那個數(shù)字圖的矩陣,共10個。
②對每一個數(shù)字進行了尺寸的設(shè)置,其實多大都行,只要后面匹配計算數(shù)值的時候設(shè)置成和模板一樣的就行。
二、圖片預(yù)處理
1.初始化卷積核
在后面對圖像進行形態(tài)學(xué)運算的時候會用到
2.圖片預(yù)處理第一部分
3.圖像預(yù)處理第二部分
最終目的是把卡片上面的數(shù)字部分的坐標選出來,因此,在圖像處理過程中,只需要把所有輪廓都畫出來,即可,后面會對輪廓進行處理。
三、輪廓處理
1.大輪廓過濾
由于數(shù)字的輪廓是擁有類似的長寬比,因此每一個輪廓的坐標得到的近似矩形,它的長寬比應(yīng)該是相似的,根據(jù)這個特性,選擇出來我們所需要的大輪廓,并把坐標及長寬信息以元組形式保存起來。
2.小輪廓分割
以上的循環(huán), 是把每一個大輪廓(包含4個數(shù)字)切割成4個小輪廓,每一個數(shù)字一個輪廓。同樣使用切割大輪廓的方法并按照輪廓的橫坐標進行排序。
在上面的循環(huán)內(nèi),繼續(xù)補充下面的循環(huán):
以上的循環(huán)是在上一個大循環(huán)之內(nèi)的。是對于每一個數(shù)值進行計算。通過找到矩形,并設(shè)置成和模板一樣的大小,和模板進行匹配,得到分數(shù)。選擇分數(shù)最高的那個結(jié)果的索引作為結(jié)果,索引其實就是那個目標數(shù)字。
最后直接在原圖上畫出來框,并把數(shù)字填上去,位置相對于卡片數(shù)字有一個15的位移。
以上就是python計算機視覺opencv卡號識別示例詳解的詳細內(nèi)容,更多關(guān)于python計算機視覺opencv卡號識別的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python正常時間和unix時間戳相互轉(zhuǎn)換的方法
這篇文章主要介紹了python正常時間和unix時間戳相互轉(zhuǎn)換的方法,涉及時間字符串與Unix時間戳的實現(xiàn)與轉(zhuǎn)換技巧,需要的朋友可以參考下2015-04-04Django打印出在數(shù)據(jù)庫中執(zhí)行的語句問題
這篇文章主要介紹了Django打印出在數(shù)據(jù)庫中執(zhí)行的語句,文中給大家提到了Django 查看執(zhí)行的sql語句方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07詳解LyScript 內(nèi)存掃描與查殼實現(xiàn)
這篇文章主要為大家介紹了詳解LyScript 內(nèi)存掃描與查殼實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09