資源簡介
基于OpenCV2.4.7的車牌識別系統(tǒng)。
Author:LinJianmin

代碼片段和文件信息
//?LPRmain.cpp?:?快速車牌識別系統(tǒng)的主文件
//?本文件是系統(tǒng)的車牌定位和字符分割部分的代碼,本系統(tǒng)引用的是OpenCV2.4.7,IDE是VS2012
//?Author:LinJianmin
//?Email:?jianmin1990@outlook.com
//?University:Huaqiao?University
//?Date:??2014-1
#include?“LPR.h“
int?main()
{
//////////////////////////////////////////////////////////////////////////////////////////////
//第一部分:圖像采集/圖像載入(本系統(tǒng)直接讀取圖像)
//若采用camera采集示例如下:
/* VideoCapture?cap(0);
if?(!cap.isOpened())
{
return?-1;
}
Mat?car_frame;
cap?>>?car_frame;
*/
//圖像載入
Mat?car_img;
car_img?=?imread(“E:\\LPR\\car.bmp“);
if?(!car_img.data)
{
cout<<“Please?check?the?input?image“< }
/////////////////////////////////////////////////////////////////////////////////////////////////
//?第二部分:車牌定位
//轉(zhuǎn)變成灰度圖像
Mat?gray;
cvtColor(car_imggrayCV_BGR2GRAY);
//高斯濾波器濾波去噪(可選)
/* int?ksize?=?3;
Mat?g_gray;
Mat?G_kernel?=?getGaussianKernel(ksize0.3*((ksize-1)*0.5-1)+0.8);
filter2D(grayg_gray-1G_kernel);
//Sobel算子(x方向和y方向)
?Mat?sobel_xsobel_y;
?Sobel(g_graysobel_xCV_16S103);
?Sobel(g_graysobel_yCV_16S013);
?Mat?abs_xabs_y;
?convertScaleAbs(sobel_xabs_x);
?convertScaleAbs(sobel_yabs_y);
?Mat?grad;
?addWeighted(abs_x0.5abs_y0.50grad);
?Mat?img_bin;
?threshold(gradimg_bin0255CV_THRESH_BINARY?|CV_THRESH_OTSU);
*/
//二值化
Mat?gray_bi;
threshold(graygray_bi0255CV_THRESH_OTSU);
//灰度拉伸
// Mat?equ_img;
// equalizeHist(gray_biequ_img);
float?num[256]?p[256]p1[256];
memset(num0sizeof(num));//?清空三個數(shù)組
memset(p0sizeof(p));
memset(p10sizeof(p1));
long?wMulh?=?gray_bi.cols?*?gray_bi.rows;
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
int?v?=?gray_bi.at(ji);
num[v]++;
}
}
for?(int?i?=?0;?i?256;?i++)//存放圖像各個灰度級的出現(xiàn)概率
{
p[i]?=?num[i]?/?wMulh;
}
for?(int?i?=?0;?i?256;?i++)//求存放各個灰度級之前的概率和
{
for?(int?k?=?0;?k?<=?i;?k++)
{
p1[i]+=p[k];
}
}
for?(int?x?=?0;?x? {
for?(int?y?=?0;?y? {
int?v?=?gray_bi.at(yx);
gray_bi.at(yx)?=?p1[v]*255?+?0.5;
}
}
//邊緣增強
Mat?gray_c;
Canny(gray_bigray_c501503);
//水平投影和垂直投影
int?imgR[400]?=?{0};
bool?tag?=?false;
int?imgTop?=0;int?imgBottom?=?0;
int?img_h1img_h2;
for?(int?ht?=?0;?ht? {
for?(int?wt?=?0;?wt? {
if?(gray_c.at(htwt)?!=?0)
{
imgR[ht]++;
}
}
if?(?(!tag)&&?imgR[ht]?>?10)
{
img_h1?=?ht;
tag?=?true;
}
if?(tag?&&?imgR[ht]?<10)
{
img_h2?=ht;
tag?=?false;
}
if?(img_h2-img_h1<50?&&?img_h2?-?img_h1?>25)
{
imgTop?=?img_h1;
imgBottom?=?img_h2;
break;
}
}
int?imgR_w[300]?=?{0};
int?img_w1?=?0;
int?img_w2?=?0;
int?imgRight?=?0;
int?imgLeft?=?0;
bool?tag2?=?false;
for?(int?wt_new?=?2;?wt_new? {
for?(int?ht_new?=?imgTop;?ht_new?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-01-05?21:12??LicensePlateRecognition1\
?????目錄???????????0??2014-01-05?21:12??LicensePlateRecognition1\Debug\
?????目錄???????????0??2014-01-04?16:06??LicensePlateRecognition1\LicensePlateRecognition1\
?????目錄???????????0??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\
?????文件???????12868??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\CL.read.1.tlog
?????文件?????????444??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\CL.write.1.tlog
?????文件??????254203??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\LPRmain.obj
?????文件??????????65??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\LicensePlateRecognition1.lastbuildstate
?????文件????????2092??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\LicensePlateRecognition1.log
?????文件???????????0??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\LicensePlateRecognition1.unsuccessfulbuild
?????文件?????????686??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\cl.command.1.tlog
?????文件???????????2??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\li
?????文件???????????2??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\li
?????文件???????????2??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\li
?????文件??????625664??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\vc110.idb
?????文件?????1208320??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\Debug\vc110.pdb
?????文件?????????516??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\LPR.h
?????文件????????5623??2014-01-05?21:11??LicensePlateRecognition1\LicensePlateRecognition1\LPRmain.cpp
?????文件????????8540??2014-01-04?16:06??LicensePlateRecognition1\LicensePlateRecognition1\LicensePlateRecognition1.vcxproj
?????文件????????1061??2014-01-04?16:05??LicensePlateRecognition1\LicensePlateRecognition1\LicensePlateRecognition1.vcxproj.filters
?????目錄???????????0??2014-01-04?16:06??LicensePlateRecognition1\LicensePlateRecognition1\x64\
?????目錄???????????0??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\
?????文件???????12824??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\CL.read.1.tlog
?????文件?????????460??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\CL.write.1.tlog
?????文件??????285683??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\LPRmain.obj
?????文件??????????63??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\LicensePlateRecognition1.lastbuildstate
?????文件????????2187??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\LicensePlateRecognition1.log
?????文件?????????672??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\cl.command.1.tlog
?????文件???????????2??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\li
?????文件???????????2??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\li
?????文件???????????2??2014-01-05?20:37??LicensePlateRecognition1\LicensePlateRecognition1\x64\Debug\li
............此處省略39個文件信息
評論
共有 條評論