基于迪文T5L1芯片的車牌識別功能,是通過T5L1接收并處理OV2640攝像頭拍攝的車牌號圖片、抓取車牌字符信息來實(shí)現(xiàn)的。圖片處理過程借助了DGUS平臺的基本顯示功能,可在一定程度上減少二次開發(fā)工作。
演示視頻
迪文車牌識別系統(tǒng)方案框圖
資料下載
方案完整資料包下載可前往迪文開發(fā)者論壇:
方案簡介
硬件連接:
P1口分別連接攝像頭數(shù)據(jù)傳輸D0-D7管腳;
P2^0連接SCL、P2^1連接SDA、P2^2連接PWDN、P2^3連接RST、P2^4連接VSYNC、P2^5連接HREF、P2^6連接PCLK;
P2^1通過上拉電阻3.3k連接到電源3.3V上。
DGUS界面設(shè)置:
“攝像頭畫面”用于實(shí)時顯示當(dāng)前的畫面,用于對車牌位置的定位,以免識別目標(biāo)出現(xiàn)位置偏差或不在攝像頭畫面內(nèi)出現(xiàn)無法識別的現(xiàn)象,大小設(shè)置為160*40像素;
“定位”與“識別”按鈕用于切換當(dāng)前的工作狀態(tài),點(diǎn)擊“定位”按鈕,攝像頭工作在JPEG數(shù)據(jù)輸出模式,迪文屏將JPEG數(shù)據(jù)流存儲到相應(yīng)的變量地址中,圖標(biāo)疊加控件顯示實(shí)時畫面;
點(diǎn)擊“識別”按鈕,攝像頭切換到RGB565數(shù)據(jù)輸出模式,將采集到的一幀畫面保存到內(nèi)存中進(jìn)行后續(xù)的處理;
“攝像頭初始化”用于顯示當(dāng)前攝像頭的初始化結(jié)果,包括通信校驗(yàn)、設(shè)備ID號校驗(yàn)、參數(shù)設(shè)置等步驟,只有當(dāng)初始化成功時,攝像頭才能正常工作;
“字符上下邊界”用于顯示當(dāng)前經(jīng)過預(yù)處理后的車牌字符的上下邊界值;
“分割斷點(diǎn)數(shù)”用于顯示對識別到的字符的左右斷點(diǎn)數(shù),正常情況下應(yīng)該為16;
“閾值分割圖像”利用“基本圖形顯示”控件顯示經(jīng)過二值化處理后的圖像,方便判斷圖像預(yù)處理的效果是否達(dá)到預(yù)期以及調(diào)整二值化閾值;
“最近鄰插值圖像”用于顯示經(jīng)過插值后的每個字符的形狀,大小設(shè)置為40*20像素;
“狀態(tài)”欄顯示當(dāng)前的識別情況,是否成功;
“識別結(jié)果”用于顯示最終得到的車牌字符串。
車牌識別流程圖:
軟件程序主要函數(shù):
void RGBImage_Acquisition(void); //RGB565數(shù)據(jù)采集,存儲到內(nèi)存空間
void JPGImage_Acquisition(void); //JPG數(shù)據(jù)采集,在屏幕上顯示
void RGBImage_threshold(); //二值化處理
void Gray_Filter(); //二值化后圖像濾波,刪除多余雜點(diǎn)
void GRAY_Image_draw(); //將二值化后的圖像通過基本圖形控件顯示
void Table_ChangePoint(u16 Width, u16 Height); //統(tǒng)計(jì)每行和每列黑色像素點(diǎn)的個數(shù)
void ChangePoint_Analysis_row(void); //橫向跳變點(diǎn)分析,用于統(tǒng)計(jì)圖像的上下邊界
void Nearest_neighbor(u8 left,u8 right,u16 up,u16 down); //最近鄰插值法將字符放縮到標(biāo)準(zhǔn)
void Nebour_GRAY_Image_draw(); //最近鄰插值圖像顯示
u8 Segmentation_Char(void); //分割字符個數(shù)統(tǒng)計(jì)及左右邊界記錄
void Template_Cnstruction(); //創(chuàng)建模板行列跳變特征向量
void Template_Comparison_All(); //全像素點(diǎn)與模板進(jìn)行比較
void Template_Comparison(); //與模板行列特征向量比較
void License_plate_display(u16 x,u16 num); //顯示對比結(jié)果即最終輸出