資源簡介
vs2015+opencv3.1實現車牌的識別,其中用到了圖像分割技術,有比較好的學習參考價值,對opencv新手很有幫助
代碼片段和文件信息
/**********************************************************************************\
車牌識別總思路
一:載入圖像,初步處理,并二值化;????????????????//二值化
二:尋找含有車牌有效信息的區域????????????????????//定位
1:找上行位置
2;找下行位置
3:找左列位置
4:找右列位置
三:提取ROI并歸一化處理???????????????????????????//ROI
四:分割字符并畫白線顯示分割區域??????????????????//分割
五:定位每個字符的區域并獨立顯示??????????????????//顯示
\***************************************************************************************/
#include???
#include???
#include???
#include???
using?namespace?std;
#define?T?27????????????????????????????//判斷一行是不是車牌有效信息的閾值??
#define?T1?2????????????????????????????//判斷一列是不是車牌有效信息的閾值??
#define?S(imagexy)?((uchar*)(image->imageData?+?image->widthStep*(y)))[(x)]???
//S(imagexy)指該圖像(x,y)像素點的像素值[(x)]是數組,類似于a[i]??
IplImage?*src;
IplImage?*pImg8u?=?NULL;?????????????//灰度圖??
IplImage?*pImg8uSmooth?=?NULL;???????//高斯濾波后的圖??
IplImage?*pImgCanny?=?NULL;??????????//二值化的圖????
IplImage?*pImg8uROI?=?NULL;?????????//感興趣的圖片??
IplImage?*pImgResize?=?NULL;????????//歸一化的灰度圖??
IplImage?*pImgCharOne?=?NULL;
IplImage?*pImgCharTwo?=?NULL;
IplImage?*pImgCharThree?=?NULL;
IplImage?*pImgCharFour?=?NULL;
IplImage?*pImgCharFive?=?NULL;
IplImage?*pImgCharSix?=?NULL;
IplImage?*pImgCharSeven?=?NULL;
int?i?j;
int?row_start?row_end;?????????????//用來記錄車牌開始,結束行??
int?col_start?col_end;?????????????//用來記錄車牌開始,結束列??
int?row[120];??????????????????????//row[]存放含有有效車牌信息的第j行,把所有有效行放一個數組里面,統一管理,有利于判斷。??
int?col[340];??????????????????????//存放每個字符雙邊界(列)的位置??
int?k?=?0;???????????????????????????//含有有效車牌信息的行數??
int?nCharWidth?=?45;?????????????????//每個字符的列,也就是寬度??
int?nSpace?=?12;?????????????????????//字符之間的間隙??
int?nWidth?=?409;????????????????????//(40990)分別為感興趣圖像的寬度與高度??
int?nHeight?=?90;
void?find_UpAndDown_row(IplImage?*src_son_row);
//定義一個子函數,找到圖片中含有車牌有效信息的最上行和最下行??
void?find_LeftAndRight_col(IplImage?*src_son_col);
//定義一個子函數,找到圖片中含有車牌有效信息的最左列和最右列??
void?find_ROI(IplImage?*before_ROI?IplImage?*after_ROI);
//定義一個子函數find_ROI,找到圖片中只含有目標區域的部分??
void?cut_and_drawLine(IplImage?*befour_cut_image);
//定義一個子函數cut_and_drawLine,對含有車牌有效信息的圖片分割出字符,并畫出分割線??
void?show_every_char(IplImage?*showChar);
//定義一個子函數show_every_char,顯示出所有分割出來的字符??
void?main()
{
src?=?cvLoadImage(“D:/車牌.jpg“?-1);
pImg8uSmooth?=?cvCreateImage(cvGetSize(src)?IPL_DEPTH_8U?1);
pImg8u?=?cvCreateImage(cvGetSize(src)?IPL_DEPTH_8U?1);
pImgCanny?=?cvCreateImage(cvGetSize(src)?IPL_DEPTH_8U?1);
cvCvtColor(src?pImg8u?CV_RGB2GRAY);????????????????//灰度化??
cvSmooth(pImg8u?pImg8uSmooth?CV_GAUSSIAN?3?0?0);???//高斯濾波??
cvCanny(pImg8uSmooth?pImgCanny?100?200?3);?????????//二值化??????
cvDilate(pImgCanny?pImgCanny?0?1);
cvErode(pImgCanny?pImgCanny?0?1);
cvNamedWindow(“cvcanny“?1);
cvShowImage(“cvcanny“?pImgCanny);
row_start?=?0;
row_end?=?0;
col_start?=?0;
col_end?=?0;
cout?<“圖片的高度值(即像素的行數)為:“?<height?< cout?<“圖片的寬度值(即像素的列數)為:“?<
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-09-12?12:30??車牌識別\
?????目錄???????????0??2017-06-10?20:18??車牌識別\.vs\
?????目錄???????????0??2017-06-10?20:18??車牌識別\.vs\opencv-001\
?????目錄???????????0??2017-06-10?20:18??車牌識別\.vs\opencv-001\v14\
?????文件???????32256??2017-07-11?10:09??車牌識別\.vs\opencv-001\v14\.suo
?????目錄???????????0??2017-09-12?12:30??車牌識別\opencv-001\
?????文件????????1312??2016-08-10?14:39??車牌識別\opencv-001.sln
?????文件????50020352??2017-07-11?10:09??車牌識別\opencv-001.VC.db
?????文件???????13495??2017-06-10?21:24??車牌識別\opencv-001\main.cpp
?????文件????????7451??2017-04-17?21:59??車牌識別\opencv-001\opencv-001.vcxproj
?????文件????????1067??2017-04-17?21:59??車牌識別\opencv-001\opencv-001.vcxproj.filters
?????文件???????95061??2016-06-15?22:54??車牌識別\opencv-001\test.jpg
?????目錄???????????0??2017-06-10?20:18??車牌識別\opencv-001\x64\
?????目錄???????????0??2017-09-12?12:30??車牌識別\opencv-001\x64\Debug\
?????文件??????104503??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\main.obj
?????文件????????1273??2017-04-22?08:57??車牌識別\opencv-001\x64\Debug\opencv-001.Build.CppClean.log
?????文件?????????867??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\opencv-001.log
?????目錄???????????0??2017-09-12?12:30??車牌識別\opencv-001\x64\Debug\opencv-001.tlog\
?????文件????????1390??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\opencv-001.tlog\CL.command.1.tlog
?????文件???????30878??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\opencv-001.tlog\CL.read.1.tlog
?????文件?????????524??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\opencv-001.tlog\CL.write.1.tlog
?????文件????????6966??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\opencv-001.tlog\li
?????文件????????8596??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\opencv-001.tlog\li
?????文件?????????510??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\opencv-001.tlog\li
?????文件?????????208??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\opencv-001.tlog\opencv-001.lastbuildstate
?????文件??????510976??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\vc140.idb
?????文件??????757760??2017-06-10?21:18??車牌識別\opencv-001\x64\Debug\vc140.pdb
?????文件?????????669??2017-04-17?21:58??車牌識別\stdafx.h
?????目錄???????????0??2017-06-10?20:18??車牌識別\x64\
?????目錄???????????0??2017-09-12?12:30??車牌識別\x64\Debug\
?????文件???????72704??2017-06-10?21:18??車牌識別\x64\Debug\opencv-001.exe
............此處省略2個文件信息
- 上一篇:msp430使用OLED實現數字鐘.zip
- 下一篇:Feret人臉分類數據庫
評論
共有 條評論