找回密码
 注册

QQ登录

只需一步,快速开始

搜索

基于SVM的手写数字识别上位机(源码) VC++2010 + OpenCV2.4.9开发

[复制链接]
coolice 发表于 2020-4-29 22:54:06 | 显示全部楼层 |阅读模式
一个基于SVM的数字手写识别分享给大家;源码见附件, VS2010 + OpenCV2.4.9开发
HandWrite.rar (15.41 MB, 售价: 2 E币)
识别效果如下图所示:
170640zcjhg55uumet40hx.png
部分源代码
  1. void CHandWriteDlg::OnBnClickedButtonIdentify()
  2. {
  3.         // TODO: 在此添加控件通知处理程序代码
  4.         if(m_firstFlag == false)
  5.         {
  6.                 MessageBox(_T("请现在手写区写入数字!"));
  7.                 return ;
  8.         }
  9.       
  10.         CvSVM svm;
  11.         IplImage *test;
  12.         CString strResult;
  13.         char* str;
  14.         CRect pRect;
  15.         CWnd* pwnd=GetDlgItem(IDC_STATIC_HAND);//获取静态控件的指针 CRect pRect;
  16.         CDC* pDC=pwnd->GetDC(); //使用控件指针创建绘图用的DC
  17.         pwnd->GetClientRect(&pRect);
  18.         int w, h;
  19.         w = pRect.right - pRect.left;
  20.         h = pRect.bottom - pRect.top;
  21.         CBitmap bm;
  22.         bm.CreateCompatibleBitmap(pDC, w, h);
  23.         CDC memdc;
  24.         memdc.CreateCompatibleDC(pDC);
  25.         CBitmap*pOld=memdc.SelectObject(&bm);
  26.         memdc.BitBlt( 0, 0, w, h, pDC, pRect.left, pRect.top, SRCCOPY );
  27.         BITMAP btm;
  28.         bm.GetBitmap(&btm);
  29.         DWORD size=btm.bmWidthBytes*btm.bmHeight;
  30.         LPSTR lpData=(LPSTR)::GlobalAlloc(GPTR,size);
  31.         BITMAPINFOHEADER bih;
  32.         bih.biBitCount=btm.bmBitsPixel;
  33.         bih.biClrImportant=0;
  34.         bih.biClrUsed=0;
  35.         bih.biCompression=0;
  36.         bih.biHeight=btm.bmHeight;
  37.         bih.biPlanes=1;
  38.         bih.biSize=sizeof(BITMAPINFOHEADER);
  39.         bih.biSizeImage=size;
  40.         bih.biWidth=btm.bmWidth;
  41.         bih.biXPelsPerMeter=0;
  42.         bih.biYPelsPerMeter=0;
  43.         GetDIBits(memdc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
  44.         BITMAPFILEHEADER bfh;
  45.         bfh.bfReserved1=bfh.bfReserved2=0;
  46.         bfh.bfType=((WORD)('M'<< 8)|'B');
  47.         bfh.bfSize=54+size;
  48.         bfh.bfOffBits=54;

  49.         CFile bf;
  50.         if(bf.Open(_T("a.bmp"),CFile::modeCreate|CFile::modeWrite))
  51.         {
  52.                 bf.Write(&bfh,sizeof(BITMAPFILEHEADER));
  53.                 bf.Write(&bih,sizeof(BITMAPINFOHEADER));
  54.                 bf.Write(lpData,size);
  55. ……………………

  56. …………限于本文篇幅 余下代码请下载附件…………
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-11-23 15:55

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表