车牌识别系统基于开发系统代码大全.doc

上传人:仙人指路1688 文档编号:2393128 上传时间:2023-02-17 格式:DOC 页数:45 大小:119.50KB
返回 下载 相关 举报
车牌识别系统基于开发系统代码大全.doc_第1页
第1页 / 共45页
车牌识别系统基于开发系统代码大全.doc_第2页
第2页 / 共45页
车牌识别系统基于开发系统代码大全.doc_第3页
第3页 / 共45页
车牌识别系统基于开发系统代码大全.doc_第4页
第4页 / 共45页
车牌识别系统基于开发系统代码大全.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《车牌识别系统基于开发系统代码大全.doc》由会员分享,可在线阅读,更多相关《车牌识别系统基于开发系统代码大全.doc(45页珍藏版)》请在三一办公上搜索。

1、 / 图像字符识别毕业设计View.cpp : CMyView 类的实现/#include stdafx.h#include 图像字符识别毕业设计.h#include 图像字符识别毕业设计Doc.h#include 图像字符识别毕业设计View.h#include .图像字符识别毕业设计view.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMyViewIMPLEMENT_DYNCREATE(CMyView, CView)BEGIN_MESSAGE_MAP(CMyView, CView)/ 标准打印命令ON_COMMAND(ID_FILE_PRINT,

2、 CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)ON_COMMAND(ID_FILE_OPEN, OnFileOpen)ON_COMMAND(ID_IMAGE_PARAMENT, OnImageParament)ON_COMMAND(ID_FIND_CARNUMBER, OnFindCarnumber)ON_COMMAND(ID_COLOR_CRAY, OnColorCray)ON_CO

3、MMAND(ID_MEDIAN5, OnMedian5)ON_COMMAND(ID_LOG_BORDDETEC, OnLogBorddetec)ON_COMMAND(ID_OTSU_THRESHOLD, OnOtsuThreshold)ON_COMMAND(ID_CATCH_NUMBERONCE, OnCatchNumberonce)ON_COMMAND(ID_Lap_Borddetec, OnLapBorddetec)ON_COMMAND(ID_CATCH_BNUMBER, OnCatchBnumber)ON_COMMAND(ID_GET_CARNUMBER, OnGetCarnumber)

4、ON_COMMAND(ID_GET_HCARNUMBER, OnGetHcarnumber)ON_COMMAND(ID_NUMBER_CUT, OnNumberCut)ON_COMMAND(ID_ADD_ALL, OnAddAll)ON_COMMAND(ID_NUMBER_STUDY, OnNumberStudy)ON_COMMAND(ID_FIRSTNUMBER_RECOGNISE, OnFirstnumberRecognise)ON_COMMAND(ID_SECONDNUMBER_RECOGNISE, OnSecondnumberRecognise)ON_COMMAND(ID_THIRDN

5、UMBER_RECOGNISE, OnThirdnumberRecognise)ON_COMMAND(ID_FOURTHNUMBER_RECOGNISE, OnFourthnumberRecognise)ON_COMMAND(ID_FIFTHNUMBER_RECOGNISE, OnFifthnumberRecognise)ON_COMMAND(ID_SISTHNUMBER_RECOGNISE, OnSisthnumberRecognise)ON_COMMAND(ID_SEVENTHNUMBER_RECOGNISE, OnSeventhnumberRecognise)ON_COMMAND(ID_

6、ZIMU_STUDY, OnZimuStudy)ON_COMMAND(ID_HANZI_STUDY, OnHanziStudy)ON_COMMAND(ID_ZHIFUSHIBIE_ZONGHE, OnZhifushibieZonghe)END_MESSAGE_MAP()/ CMyView 构造/析构CMyView:CMyView()/ TODO: 在此处添加构造代码CMyView:CMyView()BOOL CMyView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或/ 样式return CVi

7、ew:PreCreateWindow(cs);/ CMyView 绘制void CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;/ TODO: 在此处为本机数据添加绘制代码if (!m_Image.IsNull()m_Image.Draw(pDC-m_hDC,0,0);/ CMyView 打印BOOL CMyView:OnPreparePrinting(CPrintInfo* pInfo)/ 默认准备return DoPreparePrinting(pInfo);v

8、oid CMyView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 打印前添加额外的初始化void CMyView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 打印后添加清除过程/ CMyView 诊断#ifdef _DEBUGvoid CMyView:AssertValid() constCView:AssertValid();void CMyView:Dump(CDumpContext& dc) constCView:Dump(dc);CMyD

9、oc* CMyView:GetDocument() const / 非调试版本是内联的ASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMyDoc);return (CMyDoc*)m_pDocument;#endif /_DEBUG/ CMyView 消息处理程序void CMyView:OnFileOpen()/ TODO: 在此添加命令处理程序代码CString strFilter;CSimpleArray aguidFileTypes;HRESULT hResult;/ 获取CImage支持的图像文件的过滤字符串hResult = m_Image.G

10、etExporterFilterString(strFilter,aguidFileTypes,_T( All Image Files) );if (FAILED(hResult) MessageBox(GetExporterFilter调用失败!);return;CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST, strFilter);if(IDOK != dlg.DoModal() return;m_Image.Destroy();/ 将外部图像文件装载到CImage对象中hResult = m_Image.Load(dlg.GetFi

11、leName();if (FAILED(hResult) MessageBox(调用图像文件失败!);return;/ 设置主窗口标题栏内容CString str;str.LoadString(AFX_IDS_APP_TITLE);AfxGetMainWnd()-SetWindowText(str + - +dlg.GetFileName();Invalidate(); / 强制调用OnDrawvoid CMyView:OnImageParament()/ TODO: 在此添加命令处理程序代码CClientDC dc(this);HBRUSH hBrush;HPEN hPen;int i,x,

12、y,k,nYChar;CString str;TEXTMETRIC tm;char *textbuf=像素行的存储顺序,像素宽度,像素高度,每像素位数,每行字节数;x=775;y=120;hPen=(HPEN) GetStockObject(WHITE_PEN);hBrush=(HBRUSH) GetStockObject(WHITE_BRUSH);dc.SelectObject(hPen);dc.SelectObject(hBrush);dc.GetTextMetrics(&tm);dc.SetTextColor(RGB(0,0,0);nYChar=(tm.tmHeight+tm.tmExt

13、ernalLeading)*3/2;dc.TextOut(x+60,y-nYChar*3/2,图像特征参数);for(i=0;i5;i+)dc.TextOut (x,y+nYChar*i,textbufi);x+=175;k=m_Image.GetPitch();if(kIsNull() return;ppImgParam-nWidth = pImg-GetWidth();ppImgParam-nHeight = pImg-GetHeight();ppImgParam-nBitCount = pImg-GetBPP();ppImgParam-nBytesPerLine = (pImg-GetW

14、idth()*pImg-GetBPP()+31)/32*4;ppImgParam-nBytesPerPixel = pImg-GetBPP()/8;if (pImg-GetBPP()nNumColors= 1 GetBPP();else ppImgParam-nNumColors= 0;ppImgParam-nSize = ppImgParam-nBytesPerLine*ppImgParam-nHeight;void ImageCopy(CImage *pImgn,CImage *pImgm) structIMAGEPARAMENT P; RGBQUADColorTab256; CDC*pO

15、rigDC,*pDC; GetImageParament(pImgm,&P); if (!pImgn-IsNull() pImgn-Destroy(); pImgn-Create(P.nWidth,P.nHeight,P.nBitCount,0); if (P.nNumColors0) pImgm-GetColorTable(0,P.nNumColors,ColorTab);pImgn-SetColorTable(0,P.nNumColors,ColorTab); pOrigDC= CDC:FromHandle(pImgm-GetDC(); pDC = CDC:FromHandle(pImgn

16、-GetDC(); pDC-BitBlt(0,0,P.nWidth,P.nHeight,pOrigDC,0,0,SRCCOPY); pImgm-ReleaseDC(); pImgn-ReleaseDC();void ColorToGray(CImage *pImgn,CImage *pImgm) inti, x, y;intgray256;BYTE*cbuf,*gbuf;RGBQUADColorTab256; CImagegpImg; CStringstr1; structIMAGEPARAMENT P;GetImageParament(pImgm,&P); if (P.nBitCount8)

17、 return; gpImg.Create(P.nWidth,P.nHeight,8,0); for (i=0; iGetBPP()GetColorTable(0,P.nNumColors,ColorTab);for (i=0; iP.nNumColors; i+)grayi = (int) (0.11*ColorTabi.rgbBlue + 0.59*ColorTabi.rgbGreen + 0.30*ColorTabi.rgbRed);for (y=0; yGetPixelAddress(0,y); gbuf = (BYTE*) gpImg.GetPixelAddress(0,y);for

18、 (x=0; xP.nWidth; x+) gbufx = (BYTE) graycbufx; else for (y=0; yGetPixelAddress(0,y); gbuf = (BYTE*) gpImg.GetPixelAddress(0,y);for (x=0,i=0; xSetWindowText(str1 + - +灰度图);Invalidate();int MedValue(int *buf,int n,int m)int i,j,k,f;for(i=1;i=i;j-)if(bufjbufj+1)k=bufj;bufj=bufj+1;bufj+1=k;f=1;if(f=0)

19、break;return(bufm);int buff15;void Median5(BYTE *list0,BYTE*list1,int DX,int DY)int flag=5;for(int i=1;iDY-1;i+)for(int j=1;jDX-1;j+)buff10=list1i-1j;buff11=list1ij;buff12=list1i+1j;buff13=list1ij-1;buff14=list1ij+1;list0ij=(BYTE)MedValue(buff1,flag,flag/2);BYTE* Create2DList(CImage *pImg) structIMA

20、GEPARAMENT P;inti;BYTE*list; GetImageParament(pImg,&P);list=(BYTE*)malloc(P.nHeight*sizeof(BYTE*); for (i=0;iGetPixelAddress(0,i); return(list);void CMyView:OnMedian5()/ TODO: 在此添加命令处理程序代码struct IMAGEPARAMENT PP;BYTE *list1,*list0;ImageCopy(&m_Image1,&m_Image);list1=(BYTE *)Create2DList(&m_Image); l

21、ist0=(BYTE *)Create2DList(&m_Image1); GetImageParament(&m_Image,&PP);Median5(list0,list1,PP.nWidth,PP.nHeight);ImageCopy(&m_Image,&m_Image1); CString str2; str2.LoadString(AFX_IDS_APP_TITLE); AfxGetMainWnd()-SetWindowText(str2 + - +5点中值滤波);Invalidate();intMask33,Mask555,Scale,Offset; void WINAPI Tem

22、plate(BYTE *list0,BYTE *list1,int Dx,int Dy) int i,j,g; for (i=1;iDy-1;i+) for (j=1;j0xff) g=0xff; else if (g0) g=0; list0ij = (BYTE) g; void WINAPI TemplateB(BYTE *list0,BYTE *list1,int Dx,int Dy,int t) / t x t 邻域处理共用程序 (t = 3 or 5)int i,j,g,m,n,*p; for (i=t/2;iDy-t/2;i+) for (j=t/2;jDx-t/2;j+) g=0

23、;p=&Mask500;for (m=i-t/2;m=i+t/2;m+) for (n=j-t/2;n0xff) g=0xff;else if (gSetWindowText(str2 + - +laplacian变换);Invalidate();void WINAPI LoG(BYTE *list0,BYTE *list1,int Dx,int Dy) / 高斯型拉普拉斯算法int mask25= 0, 0,-1, 0, 0, 0,-1,-2,-1, 0, -1,-2,16,-2,-1, 0,-1,-2,-1, 0, 0, 0,-1, 0, 0; Scale=1;Offset=254; me

24、mcpy(Mask5,mask,25*sizeof(int); TemplateB(list0,list1,Dx,Dy,5); Offset=0;void CMyView:OnLogBorddetec()/ TODO: 在此添加命令处理程序代码struct IMAGEPARAMENT PP;BYTE *list1,*list0;ImageCopy(&m_Image1,&m_Image);list1=(BYTE *)Create2DList(&m_Image); list0=(BYTE *)Create2DList(&m_Image1); GetImageParament(&m_Image,&P

25、P);LoG(list0,list1,PP.nWidth,PP.nHeight); ImageCopy(&m_Image,&m_Image1); CString str2; str2.LoadString(AFX_IDS_APP_TITLE); AfxGetMainWnd()-SetWindowText(str2 + - +log变换);Invalidate();int MaxMin(double *tab,int flag) double max,min; int i,p,q; max=min=tab128; p=q=128; for (i=0;imax) max=tabi; p=i; if

26、 (tabimin) min=tabi; q=i; if (flag=1) for (i=0;i256;i+) tabi=120*(max-tabi)/(max-min); else for (i=0;iSetColorTable(0, P.nNumColors, ColorTab);void SetPalette(CImage *pImg,int n,int r,int g,int b)RGBQUAD ColorTab;ColorTab.rgbBlue = b; ColorTab.rgbGreen = g; ColorTab.rgbRed = r;pImg-SetColorTable(n,

27、1, &ColorTab);int WINAPI Otsu(long *pg) / 大津法取阈值 int i,j,p; double m0,m1,M0,M1,u,v,w256; M0=M1=0; for (i=0;i256;i+) M0+=pgi; M1+=pgi*i; for (j=0;j256;j+) m0=m1=0; for (i=0;i=j;i+) m0+=pgi; m1+=pgi*i; if (m0) u=m1/m0; else u=0; if (M0-m0) v=(M1-m1)/(M0-m0); else v=0; wj=m0*(M0-m0)*(u-v)*(u-v); p=MaxM

28、in(w,1); return(p);longpg256;void Threshold(CImage *pImgm,double ff) structIMAGEPARAMENT P;BYTE*list,*lpBuf;RGBQUADColorTab256; intx,y,thre;/int t;/inttab256,buf20,bn; GetImageParament(pImgm,&P); list=(BYTE*) Create2DList(pImgm);/histog(list,pg,0,0,P.nWidth,P.nHeight); thre=Otsu(pg); for (y=0;yGetPi

29、xelAddress(0,y);for (x=0;x=thre) *lpBuf=1;else *lpBuf=0; memset(ColorTab,0,1024);SetAllPalette(pImgm,ColorTab); SetPalette(pImgm,1,255,255,255);Release2DList(list);void CMyView:OnOtsuThreshold()/二值化响应函数/ TODO: 在此添加命令处理程序代码 Threshold(&m_Image,0);CString str2; str2.LoadString(AFX_IDS_APP_TITLE); AfxGe

30、tMainWnd()-SetWindowText(str2 + - +OTSU法二值化);Invalidate();int InImage(CImage *pImg,int x,int y) structIMAGEPARAMENT P; GetImageParament(pImg,&P); if (x0)|(y=P.nWidth)|(y=P.nHeight) return 0;else return 1;DWORD GetPixelValue(CImage *pImg,int x,int y) structIMAGEPARAMENT P;BYTE*lp; DWORDdd=0;GetImageParament(pImg,&P);if (P.nBitCountGetPixelAddress(x,y); memcpy(&dd,lp,P.nBytesPerPixel);return(dd);void SetPixelValue(CImage *pImg,int x,int y,DWORD c) structIMAGEPARAMENT P;BYTE*lp; GetImageParament(pImg,&P);if (P.nBitCountGetPixelAddr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号