最近由于要做项目所以做可视化界面,在网上查询了半天时间发现大部分MFC和OpenCV联合开发的案例都是基于OpenCV3.0以前,较为新的版本较少或者制作过程不清楚。为此本人将自己查阅资料写的基于VS2017的MFC平台与OpenCV4.0.1联合小案列写出来供大家参考,赠人玫瑰,手留余香,希望大家多多批评和指正。话不多说,直接上干货。

【1】测试效果图(点击显示图片就可以从文件夹中显示一张图片出来)

【2】实现过程及代码(vs2017和OpenCV4.0.1)

程序思想:
注解:namedWindow生成两个窗口:子窗口、父窗口
(1)把namedWindow创建的子窗口的大小调整为和图片控件大小一样
(2)获得namedWindow创建的父窗口:为了把该父窗口隐藏,用::ShowWindow(hParent, SW_HIDE);
(3)获得namedWindow创建的子窗口:为了把子窗口的父窗口设置为picture控件,即把图片显示在控件上,用SetParent函数。
(4)加载图片并显示:imread、imshow。

(1)创建MFC文档及可视化界面的初步设计

(2)可视化界面的初步设计(控件:一个button和一个picture contro)

(3)更改控件的ID

(3)代码的编辑

头文件设置  找到MatshowimageDlg.h添加以下代码

注意一定要添加 :#include "opencv2/highgui/highgui_c.h"

#include <iostream>
#include<opencv2/core.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include <opencv.hpp>#include<string>using namespace std;
using namespace cv;

初始化设置 找到MatshowimageDlg.cpp添加一下代码

 namedWindow("view", WINDOW_AUTOSIZE); HWND hWnd = (HWND)cvGetWindowHandle("view");HWND hParent = ::GetParent(hWnd);::SetParent(hWnd, GetDlgItem(IDC_PIC_STATIC)->m_hWnd);::ShowWindow(hParent, SW_HIDE);

图像处理代码 找到MatshowimageDlg.cpp添加一下代码

CString picPath;   //定义图片路径变量  CFileDialog dlg(TRUE, "*.*", "*.*", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif|bmp文件(*.bmp)|*.bmp|文件(*.*)|*.*|", NULL);if (dlg.DoModal() == IDOK){picPath = dlg.GetPathName();  //获取图片路径  }//CString to string  使用这个方法记得字符集选用“使用多字节字符”,不然会报错  string picpath = picPath.GetBuffer(0);Mat image = imread(picpath);Mat imagedst;//以下操作获取图形控件尺寸并以此改变图片尺寸  CRect rect;GetDlgItem(IDC_PIC_STATIC)->GetClientRect(&rect);Rect dst(rect.left, rect.top, rect.right, rect.bottom);resize(image, imagedst, Size(rect.Width(), rect.Height()));imshow("view", imagedst);

【3】最终效果展示

【4】总结

MFC结合OpenCV过程中有很多问题  都需要不断的调试 本来MFC的学习就是一件特别痛苦的事  但是未来可期 继续努力。

【5】基于VS2017的MFC平台与OpenCV4.0.1联合小案列相关推荐

  1. 海思Hi3559A平台移植 opencv4.0.0

    原文:https://blog.csdn.net/xclshwd/article/details/85257117 海思Hi3559A平台移植 opencv4.0.0 2018年12月26日 09:5 ...

  2. 基于VS2015,MFC平台的上位机串口程序搭建详细教程(兼容debug x64、win32 、x86等解决方案平台)

    通常在32位编译环境下,我们可以通过插入MFC串口控件(MSCOMM32.OCX)的方式来实现串口通信,但是MSCOMM32.OCX不支持64位编译环境,也就是说,在x64解决方案平台下会报错.为此, ...

  3. 小程序开发难吗?免编程应用制作平台助你0️技术制作小程

    在微信不断开放权限和功能的前提下,小程序的功能也越来越强大,小程序与公众号间的跳转,小程序直播,小程序分享朋友圈的功能的实现,对于商家获取流量的渠道越来越多,也越来越多的微小企业选择小程序来曝光自己的 ...

  4. Android O Treble框架笔记(基于高通845平台)

    Android O Treble框架笔记(基于高通845平台) tags: android 文章目录 Android O Treble框架笔记(基于高通845平台) @[toc] **0 前言** * ...

  5. Android O 的camera framework-hal层框架笔记(基于高通845平台)

    Android O 的camera framework/hal层框架笔记(基于高通845平台) tags: android camera 文章目录 Android O 的camera framewor ...

  6. 华为云龙api自动化工具_聊聊华为GDE刚发布的一体化低门槛开发平台ADC 2.0

    聊聊华为GDE刚发布的一体化低门槛开发平台ADC 2.0 华为GTS,华为GDE,ADC 2.0,这些都是什么?一文讲清楚 文/王吉伟 12月3日,华为GTS举办了2020 GTS合作伙伴大会,也是其 ...

  7. 如何建立MFC绘图工程:外貌框架_基于对话框(开发平台VS2017)

    对于学习MFC的初学者,入门的步骤很重要,新建一个基于对话框的MFC应用程序,并通过拖拉按钮等,初步搭建自己的MFC工程. 工具/原料 笔记本电脑 VS2017 方法/步骤 1.打开VS2017,并新 ...

  8. 基于VTK的MFC应用程序开发(1)

    基于VTK的MFC应用程序开发(1) 分类: VTK应用示例 2013-03-24 22:35 4195人阅读 评论(28) 收藏 举报 CMakeVTKMFC 目录(?)[+] 提到MFC一般都不陌 ...

  9. OpenCV4.0+VS2017完整安装配置过程(详细!)

    刚步入研究生生活,老师要求安装OpenCV+VS,所以昨天捣鼓了下,成功''吃鸡''.所以今天写下昨天安装的过程,也便自己对此印象更加深刻. 一.下载安装VS2017 我安装的版本是目前最新的Visu ...

最新文章

  1. 《Windows Server 2012 Hyper-V虚拟化管理实践》一第1章 Hyper-V服务器选型
  2. win7 无法复制粘贴
  3. 关于如何卸载Lenovo System Interface Foundation方法
  4. 高项的项目管理ITTO(PMP第五版)
  5. 如何发布你的Android应用程序
  6. 如何创建依赖于某时间段的ABAP视图
  7. double和float的误区!
  8. 香港中文大学MMLab期待优秀同学加入~
  9. 鸿蒙硬件HI3861-MQTT-连接华为云
  10. python网页部署-想用python3做web开发的一些不知(主要是环境部署),求解!
  11. 2014025675 《嵌入式系统程序设计》第七周学习总结
  12. clickhouse的kafka表引擎 +接口表
  13. [导入]用Windows自带的媒体播放器抓视频截图
  14. 电子线路与电磁干扰/电磁兼容设计分析
  15. 播放器实战22 解决花屏与卡顿问题
  16. [论文阅读]Structure-from-Motion Revisited
  17. 圆圈中最后剩下的数字 ----《剑指offer》面试题45
  18. android主流视频直播sdk,Android视频直播SDK集成指引
  19. 基于Android的便签设计(二)
  20. 便利蜂是“冬眠”还是“假寐”,只有时间知道

热门文章

  1. 如何用解压缩工具破解PPT文档保护
  2. 绿联mac网线转USB osx10.9-11.0.1
  3. HTML5七夕情人节表白网页制作【生日蛋糕烟花动画CSS3特效】HTML+CSS+JavaScript html生日快乐祝福网页制作
  4. 嵌入式linux 硬盘录像机,嵌入式硬盘录像机技术的简单介绍
  5. Android开发学习资源之(三)
  6. 跪求一个木马生成器要零点的 谢谢!~
  7. 乔布斯斯坦福演讲---找到你的钟爱
  8. RabbitMQ学习(十五):消极确认(Negative Acknowledgements)
  9. 如何清空微信小程序input值
  10. 【面试总结】小灰灰求职进行曲(五)HR面试常见问题