按照在**跌倒就在**爬起來的精神,本章繼續做車牌號的檢測識別。所有步驟分為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....