opencv實現車牌識別之車牌號定位 1

2021-06-28 15:39:48 字數 2111 閱讀 7105

按照在**跌倒就在**爬起來的精神,本章繼續做車牌號的檢測識別。所有步驟分為3步完成:車牌號定位,車牌號字元分割、字元識別。

本章為第一部分:車牌號定位。

正式開始講解之前,先看下車牌號定位出來的效果演示。注:本文所有均**於網路。

如圖所示,定位到車牌號之後,將車牌號用黃色框選起來,同時將該車牌複製為新顯示出來。
首先也是常用的操作,將影象灰階化,然後從畫素值為255一側開始,以累積畫素佔總畫素5%的的地方作為二值化的閥值,進而獲得對應的二值化影象。

對應**如下:

void pic_gray(mat& mat1, mat& mat2)

} return i;}

void pic_thresholding(mat& mat1, int threshold)else

} }}

#include #include #include #include #include #include #include "lib/normal.h"

#define debug

#ifdef debug

#define de(format, ...) printf(format, ## __va_args__)

#else

#define de(format, ...) while(0)

#endif

int main(int argc,char *argv)

首先pic_gray來講源影象img,轉化為灰階影象img_2;接著用histogram_calculate函式,以5%的比例算出二值化的閥值threshold,最後用pic_thresholding,

二值化影象。

效果演示如下:

車牌是使用是藍底白字,而這個二值化影象img_2中,藍色的背景被去除了,留下了白色的字。而根據車牌的特點,每一行中藍色和白色的交替應該至少是7次。

轉化在這個img_2的二值影象中,則表示在車牌所在的行中,畫素值的跳變至少是7次。所以根據這個特性,可以將影象中,可能是車牌號所在位置的影象分割出來。

使用的代買如下:

int** selection_function_1(mat& mat1, int* number)else if((enter_flag != 0) && (flag < 7))

a[num][1] = i - 1;

num ++;

enter_flag = 0;}}

*number = num;

return a;

}void pic_cutting(mat& mat1, mat& pic_cutting, int** selection, int number)

}if(num > 20)else

num = 0;

}return num_width;}

int main(int ragc, char** argv)

}waitkey(0);

return 0;

}

使用choice_color將分割出來的每張img_3都依次轉化為hsv,然後根據h來檢測出影象中藍色畫素超過20的行數,並將該資料返回到color_num中。

接著判斷如果color_num 大於了5行就表示該影象不能拋棄。

演示效果如下:

因為該影象中,藍色干擾背景相當多,所以該步驟,只篩選丟棄了最後一張。

tensorflow實現車牌識別

學習1 中文車牌識別 學習2 國外車牌識別 returns the truth value of x y element wise.args 2 tf.configproto 一般用在建立session的時候,用來對session進行引數配置。with tf.session config tf.co...

HyperLPR車牌識別技術演算法之車牌粗定位與訓練

車牌識別是使用ocr來識別車牌的一種應用方式,車牌識別在國內經歷了十年乃至二十年的發展,在文通,火眼臻睛等一些公司的努力下,中文車牌識別技術基本趨於成熟,基本在能強光,夜晚,光照不均勻,多姿態等惡劣情況下進行穩定的識別,其商業應用也相對比較廣泛,從停車場到交通卡口,公司門禁都有涉及。車牌相比人臉,這...

基於OpenCV的車牌識別 2 車牌字元識別

3 車牌字元切割 a.閾值濾波,使用cv thresh binary引數通過把白色值變為黑色,黑色值變為白色來實現閾值輸出的反轉,因為需要獲取字元的輪廓,而輪廓的演算法尋找的是白色畫素 b.查詢輪廓 c.驗證輪廓是否為字元,去除那些規格太小的或者寬高比不正確的區域。字元是45 77的寬高比,允許0....