資源簡介
一個基于OpenCV的車牌識別系統(tǒng),支持識別車牌并且定位車牌區(qū)域
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
using?namespace?cv;
using?namespace?std;
int?cols_start?=?0?cols_end?=?0;//記錄車牌開始、結(jié)束列
int?rows_start?=?0?rows_end?=?0;//記錄車牌開始、結(jié)束行
const?int?row_thresh?=?28;//判斷一行是不是車牌有效值的閾值
const?int?col_thresh?=?2;//判斷一列是不是車牌有效值的閾值
int?row[200];//存放含有車牌有效信息的第j行,把所有有效行放在一個數(shù)組里,統(tǒng)一管理,便于判斷
int?col[30];//存放含有車牌有效信息的第j列
//計(jì)算一維高斯的權(quán)值數(shù)組
double?*getOneGuassionArray(int?size?double?sigma);
void?MyGaussianBlur(Mat?&srcImage?Mat?&dst?int?size);
//******************灰度轉(zhuǎn)換函數(shù)*************************??
//第一個參數(shù)image輸入的彩色RGB圖像的引用;??
//第二個參數(shù)imageGray是轉(zhuǎn)換后輸出的灰度圖像的引用;??
//*******************************************************
void?ConvertRGB2GRAY(const?Mat?&image?Mat?&imageGray);
//******************Sobel卷積因子計(jì)算X、Y方向梯度和梯度方向角********************??
//第一個參數(shù)imageSourc原始灰度圖像;??
//第二個參數(shù)imageSobelX是X方向梯度圖像;??
//第三個參數(shù)imageSobelY是Y方向梯度圖像;??
//第四個參數(shù)pointDrection是梯度方向角數(shù)組指針??
//*************************************************************??
void?SobelGradDirction(Mat?&imageSource?Mat?&imageSobelX?Mat?&imageSobelY);
//OTSU算法函數(shù)實(shí)現(xiàn)
int?OTSU(Mat?&srcImage);
void?find_UpandDown_row(Mat_?dstimage?Mat?src);//查找車牌的上邊線和下邊線
void?find_LeftandRight_col(Mat_?dstimage?Mat?src);//查找車牌的左邊線和右邊線
void?find_ROI(Mat?src);//查找車牌區(qū)域
int?main()
{
Mat?srcImage?=?imread(“5.jpg“);
if?(!srcImage.data)
{
printf(“could?not?load?image...\n“);
return?-1;
}
imshow(“srcImage“?srcImage);
//高斯濾波
Mat?GuassionMat;
MyGaussianBlur(srcImage?GuassionMat?3);
imshow(“GuassionMat“?GuassionMat);
//轉(zhuǎn)化為灰度圖
Mat?srcGray;
ConvertRGB2GRAY(GuassionMat?srcGray);
imshow(“srcGray“?srcGray);
//X方向的Soble邊緣檢測
Mat?imageSobelX?imageSobelY;
SobelGradDirction(srcGray?imageSobelX?imageSobelY);
imshow(“imageSobelX“?imageSobelX);
//二值化
//調(diào)用二值化函數(shù)得到最佳閾值
int?otsuThreshold?=?OTSU(imageSobelX);
cout?<
Mat?otsuResultImage?=?Mat::zeros(imageSobelX.rows?imageSobelX.cols?CV_8UC1);//創(chuàng)建一張一個通道的空的圖像
??//利用得到的閾值進(jìn)行二值操作
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
if?(imageSobelX.at(i?j)?>?otsuThreshold)
{
otsuResultImage.at(i?j)?=?255;
}
else
{
otsuResultImage.at(i?j)?=?0;
}
}
}
imshow(“otsuResultImage“?otsuResultImage);
find_UpandDown_row(otsuResultImage?srcImage);
find_LeftandRight_col(otsuResultImage?srcImage);
find_ROI(srcImage);
waitKey(0);
return?0;
}
double?*getOneGuassionArray(int?size?double?sigma)
{
double?sum?=?0.0;
int?kerR?=?size?/?2;
double?*arr?=?new?double[size];
for?(int?i?=?0;?i? {
arr[i]?=?exp(-((i?-?kerR)*(i?-?kerR))?/?(2?*?sigma*sigma));
sum?+=?arr[i];
}
for?(int?i?=?0;?i? {
arr[i]?/=?sum;
cout?< }
return?arr;
}
void?MyGaussianBlur(Mat?&srcImage?Mat?&dst?int?size)
{
CV_Assert(srcImage.channels()?||?srcImag
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????5366750??2018-11-14?18:34??Rec?0001.mp4
????..A..H.?????30720??2018-11-14?18:35??ConsoleApplication5\.vs\ConsoleApplication5\v14\.suo
?????文件????1812301??2018-11-14?15:50??ConsoleApplication5\ConsoleApplication5\1.jpg
?????文件??????12461??2018-11-14?16:52??ConsoleApplication5\ConsoleApplication5\15軟A關(guān)宇暉.cpp
?????文件??????14048??2018-11-14?16:47??ConsoleApplication5\ConsoleApplication5\2.jpg
?????文件??????19179??2018-11-14?16:50??ConsoleApplication5\ConsoleApplication5\3.jpg
?????文件??????13197??2018-11-14?16:51??ConsoleApplication5\ConsoleApplication5\4.jpg
?????文件??????40517??2018-11-14?16:52??ConsoleApplication5\ConsoleApplication5\5.jpg
?????文件???????7354??2018-11-14?18:17??ConsoleApplication5\ConsoleApplication5\ConsoleApplication5.vcxproj
?????文件????????956??2018-11-14?18:17??ConsoleApplication5\ConsoleApplication5\ConsoleApplication5.vcxproj.filters
?????文件?????365725??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\15軟A關(guān)宇暉.obj
?????文件????????852??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleA.E7404383.tlog\CL.command.1.tlog
?????文件??????15384??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleA.E7404383.tlog\CL.read.1.tlog
?????文件????????968??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleA.E7404383.tlog\CL.write.1.tlog
?????文件????????245??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleA.E7404383.tlog\ConsoleApplication5.lastbuildstate
?????文件???????2534??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleA.E7404383.tlog\li
?????文件???????5506??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleA.E7404383.tlog\li
?????文件????????948??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleA.E7404383.tlog\li
?????文件???????1638??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleApplication5.Build.CppClean.log
?????文件???????1613??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleApplication5.log
?????文件?????470016??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\vc140.idb
?????文件?????757760??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\vc140.pdb
?????文件???????1339??2018-11-14?15:43??ConsoleApplication5\ConsoleApplication5.sln
?????文件???13791232??2018-11-14?18:35??ConsoleApplication5\ConsoleApplication5.VC.db
?????文件?????134144??2018-11-14?18:34??ConsoleApplication5\x64\Debug\ConsoleApplication5.exe
?????文件?????676308??2018-11-14?18:34??ConsoleApplication5\x64\Debug\ConsoleApplication5.ilk
?????文件????1363968??2018-11-14?18:34??ConsoleApplication5\x64\Debug\ConsoleApplication5.pdb
?????文件????1754591??2018-11-14?18:30??15軟件A關(guān)宇暉_計(jì)算機(jī)視覺_課程設(shè)計(jì)報(bào)告.doc
?????目錄??????????0??2018-11-14?18:34??ConsoleApplication5\ConsoleApplication5\x64\Debug\ConsoleA.E7404383.tlog
?????目錄??????????0??2018-11-14?15:43??ConsoleApplication5\.vs\ConsoleApplication5\v14
............此處省略11個文件信息
評論
共有 條評論