|
本帖最后由 doublebin 于 2016-11-18 09:42 编辑
OpenCV是计算机视觉自由软件的宝库。但是,由于历史的原因它的软件主要采用类似DOS操作系统的命令行方式,使用十分不便,这也影响了它的推广。如果能将它应用到VC++文档结构中就好了。OpenCV程序在MFC中实现的方法通常是采用CvvImage类,这个类的成员函数DrawToHDC可将位图整体经缩放后显示到视图窗口中,解决了位图的显示问题,也就解决了OpenCV在MFC中的使用问题。
下面是编程的过程:
首先创建MFC基于对话框工程,添加Picture控件,和按钮控件。在opencv中找到CvvImage.h和CvvImage.cpp两个文件复制到创建的工程下,并把他们添加到工程中:
同样步骤添加CvvImage.cpp至源文件。要用到CvvImage类,所以先把CvvImage.h include到C×××Dlg.h中(×××表示创建基于对话框工程的名字),然后添加一个在图片控件上显示图片的函数如下:- void CMFCVideoProcessingDlg::ShowImage(IplImage* img,UINT ID)
- {
-
- CDC *pDC = GetDlgItem(ID)->GetDC();
- HDC hDC= pDC->GetSafeHdc();
- CRect rect;
- GetDlgItem(ID)->GetClientRect(&rect);
- //rect=CRect(0,0,img->width,img->height);
- CvvImage cimg;
- cimg.CopyOf( img ); // 复制图片
- cimg.DrawToHDC( hDC, &rect ); // 将图片绘制到显示控件的指定区域内
- ReleaseDC( pDC );
- }
复制代码 注意该函数要在C×××Dlg.h中先声明,在C×××Dlg.cpp中定义。双击按钮,编辑按钮的代码
- void CMFCVideoProcessingDlg::OnBnClickedButtonOpenvideo1()
- {
- // TODO: 在此添加控件通知处理程序代码
-
- Mat image1=imread(“E:\\pic.jpg”,1);//读入图片
- /************这里可以完成图像的各种处理方法*********/
- IplImage Img1=image1;//Mat类型转换为IPLImage类型
- ShowImage(&Img1,IDC_STATIC_SHOWVIDEO1);//显示图片,IDC_STATIC_SHOWVIDEO为Picture控件的ID
- }
复制代码 运行一下:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|