在校学生刚刚接触OpenCV,用OpenCV和MFC创建对话框界面,基本功能:打开文件并在picture控件上显示所选择的图片。因为我的是OpenCV3.0所以要自行添加CvvImage.h和CvvImage.cpp,方法教程网上有很多,这里不多说了,主要写一下MFC的实现代码,方便自己做一个记录。

(1)按要求创建完一个对话框后如图1所示

(2)显示图片的按钮响应函数

 1 void CvirtualrealityDlg::OnBnClickedButtonShow()
 2 {
 3     CString m_strPicPath;
 4     IplImage* TheImage;
 5     CFileDialog dlg(true, _T("*.jpg"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
 6         _T("image file(*.jpg)||All Files(*.*)|*.*|"), NULL); //选项图片的约定
 7     dlg.m_ofn.lpstrTitle = _T("open Image");                //打开文件对话框的标题名
 8     if (dlg.DoModal() != IDOK)                                //判断是否获得图片
 9         return;
10     m_strPicPath = dlg.GetPathName();                        //获得图片路径
11     m_strPicPath.Replace(_T("//"), _T(""));
12
13     TheImage = cvLoadImage((CT2CA)m_strPicPath, 1);            //读取图片、缓存到一个局部变量the image中
14
15     if (TheImage)
16         ShowImage(TheImage, IDC_STATIC_SHOW);                //调用显示图片函数
17     else
18         return;
19
20
21 }

View Code

(3)其中调用的显示图片函数ShowImage()需要在头文件中声明,在源文件中声明如下

 1 void CvirtualrealityDlg::ShowImage(IplImage* img, UINT ID)
 2 {
 3     CDC* pDC = GetDlgItem(ID)->GetDC();                        //获得显示控件的DC
 4     HDC hDC = pDC->GetSafeHdc();                            //获得HDC(设备句柄)来进行绘图操作
 5
 6     CRect rect;
 7     GetDlgItem(ID)->GetClientRect(&rect);
 8
 9     SetRect(rect, rect.left, rect.top, rect.right, rect.bottom);
10
11     CvvImage cimg;
12     cimg.CopyOf(img);                                        //复制图片
13     cimg.DrawToHDC(hDC, &rect);                                //将图片绘制到显示控件的指定区域内
14     ReleaseDC(pDC);
15
16 }

View Code

(4)再运行一下就可以了。

再来一张效果图

转载于:https://www.cnblogs.com/lincolnlu/p/8540219.html

OpenCV+MFC 打开文件并显示在picture控件上相关推荐

  1. vs中c语言图形显示出来,VS2010+Opencv+MFC读取图像和视频显示在Picture控件

    VS2010+Opencv+MFC读取图像和视频显示在Picture控件,供大家参考,具体内容如下 1.新建MFC对话框应用程序. 其余选项默认,单击完成,创建出对话框应用程序.删掉原来自带的一些控件 ...

  2. qdebug重定向_qDebug重定向到写入文件以及显示在界面控件上

    qdebug重定向到文件就很简单了,度娘一大把,不献丑了. 然后想把qdebug打印到ui的textedit上,却没找到好文章,经过测试特分享. 说白了,因为qdebug定向时用到了全局函数,那么te ...

  3. MFC/VC++中怎样将一个位图添加到数据库中并且将其读出来到指定的Picture控件上

    看这篇文章之前建议先看一下下面这篇文章: VC下显示位图的几种方法   http://blog.chinaunix.net/uid-607545-id-2088102.html或  http://bl ...

  4. mfc调取摄像头显示并截图_用OpenCV在MFC Dialog中Picture控件上显示摄像头采集实时视频...

    OpenCV之所以能在MFC Dialog的Picture控件上绘图,全靠了CvvImage::DrawToHDC()方法.这就是下文为出现CvvImage和HDC的原因.下面是具体过程,用OpenC ...

  5. MFC 配置OpenCV在Picture控件上绘图

    首先下载C++的OpenCV,这里给个百度网盘链接: 链接:https://pan.baidu.com/s/1Hltk8-eVo0lY9rj3IgIAPw 提取码:m52c 解压,放在合适位置即可. ...

  6. asp.net fileupload 文件上传后服务器上找不到文件,Asp.net中FileUpload控件上传文件例子...

    FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器.用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles ...

  7. Json解析后显示在listview控件上

    主要实现的功能:就是将Jsonj解析后,显示在ListV iew控件上(包括网络取图片) Json: {"resultCode":1,"resultInfo": ...

  8. loadimage 在picture控件上加载位图失败

    代码如下 HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), TEXT("C:\\Users\\不许州官放火\\De ...

  9. MFC中picture控件如何响应鼠标移动?

    MFC中picture控件如何响应鼠标移动? 2011-08-21 21:23 轻若惊鸿 | 浏览 3354 次 硬件网络 我将一个picture控件的属性中的Notify勾上了,但是只能响应鼠标按键 ...

  10. vc picture控件载入背景图,随控件大小改变

    在mfc里,想要在Picture控件中载入一张图片有两种方法:静态的和动态的.静态的方法就是图片先载入资源(.rc)文件中,拥有一个唯一的ID:动态的方法就是制定图片的路径名即可. 当然这样的方法网上 ...

最新文章

  1. maven生成war包的两种方式
  2. 5弹出搜索框_实用小技巧,电脑总是弹出广告,手把手教你永久关闭广告弹窗...
  3. 《系统集成项目管理工程师》必背100个知识点-74CMO的具体工作
  4. php文件怎么制定编码格式,php文件编码格式对结果有影响
  5. 优化小技巧——复杂属性对象的read模式
  6. Spring Boot集成ShedLock分布式定时任务实例
  7. MMP,我说每年年会我怎么老是中不了奖,原来是这样
  8. vb.net 同时给多个属性赋值_一个float值赋值给double,结果是什么?进来重温一下类型提升吧...
  9. application.properties和bootstrap.yml到底先读哪个文件
  10. Hexo博客向百度提交链接
  11. 东芝计算机配置,东芝Toshiba笔记本电脑开机进入BIOS的方法与bios设置参数介绍(ESC+F1)...
  12. 2018年已经过了一半,你还记得年初时候定的小目标么——致已经逝去的2018上半年
  13. html 播放360全景图,讯网360全景展示产品-html5全景图-flash全景展示-360度全景图制作...
  14. Only one expression can be specified in the select list when the subquery is not introduced with EXI
  15. Chrome模拟企业微信环境
  16. android 获取 meid 代码,Android 各个版本获取IMEI、MEID
  17. R语言导出CSV出现乱码的处理
  18. AI(人工智能),时代的风口
  19. 前端编程编辑器都有哪些 ?
  20. 达梦数据库的归档配置

热门文章

  1. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_7_等待唤醒机制需求分析...
  2. 二进制部署Kubernetes-v1.14.1集群
  3. 案例:手动输入一个字符串,打散放进一个列表,小写字母反序 大写字母保持不变...
  4. 漫谈Java IO之 NIO那些事儿
  5. 507 LOJ 「LibreOJ NOI Round #1」接竹竿
  6. 虚拟机出现ping DUP
  7. Objective-C的对象模型
  8. 开发者必备的6款源码搜索引擎
  9. 使用expect实现shell的交互
  10. web.config学习资料