实现思想:将opencv的窗口贴到MFC的图片控件上去。

显示图片路径ID:IDC_IMG_PATH
图片Static Text的ID:IDC_STATIC_IMG
代码:
// LoadImageDlg.cpp : 实现文件
//#include "stdafx.h"
#include "LoadImage.h"
#include "LoadImageDlg.h"
#include "afxdialogex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif//该程序用到的头文件
#include <opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;//该程序用到的变量
CString cstr;
string str;
Mat frame;HWND viewhWnd = NULL;
HWND hParent = NULL;
void CLoadImageDlg::OnBnClickedButtonLoadimage()
{//准备环境//destroyAllWindows();  //销毁所有的窗口cvDestroyWindow("myshowWnd");//销毁窗口SetDlgItemText(IDC_IMG_PATH," ");  //清空路径// TODO: 在此添加控件通知处理程序代码CFileDialog dlg(TRUE,"*.*","*.*", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,   "JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif|bmp文件(*.bmp)|*.bmp|文件(*.*)|*.*|",NULL);   if(dlg.DoModal()==IDOK)   {   SetDlgItemText(IDC_IMG_PATH,dlg.GetPathName());  cstr = dlg.GetPathName();str = LPCSTR(cstr); //CString->stringnamedWindow("view", WINDOW_AUTOSIZE);viewhWnd = (HWND)cvGetWindowHandle("view");hParent = ::GetParent(viewhWnd);::SetParent(viewhWnd, GetDlgItem(IDC_STATIC_IMG)->m_hWnd);::ShowWindow(hParent, SW_HIDE);//SW_HIDE:隐藏运行程序框,并且把它“画”到MFC上frame = imread(str);if (!frame.empty()){//适应于窗口大小显示图片CRect rc;CWnd *pWnd = GetDlgItem(IDC_STATIC_IMG);//IDC_PIC_2D为控件IDpWnd->GetClientRect(&rc);//rc为控件的大小。int x=rc.Height();int y=rc.Width();resize(frame,frame,Size(y,x));  //改变图片尺寸输出在picture控件上imshow("view", frame);}}
}

结果图:

当前项目工程中加载图片"1.BMP":
void CchuangkouDlg::OnLoadIMG()
{cvDestroyWindow("myshowWnd");//销毁指定窗口myshowWnd// TODO: 在此添加控件通知处理程序代码CRect rect;  GetDlgItem(IDC_STATIC)->GetClientRect(rect);//IDC_STATIC是显示的图片控件的ID  cv::namedWindow("myshowWnd", WINDOW_NORMAL);  cv::resizeWindow("myshowWnd",rect.Width(),rect.Height());  HWND hWnd = (HWND) cvGetWindowHandle("myshowWnd");  HWND hParent = ::GetParent(hWnd);  ::SetParent(hWnd, GetDlgItem(IDC_STATIC)->m_hWnd);  ::ShowWindow(hParent, SW_HIDE);
//显示图像Mat frame = imread("1.BMP");imshow("myshowWnd",frame);
}
程序思想:
注解:namedWindow生成两个窗口:子窗口、父窗口
(1)把namedWindow创建的子窗口的大小调整为和图片控件大小一样
(2)获得namedWindow创建的父窗口:为了把该父窗口隐藏,用::ShowWindow(hParent, SW_HIDE);
(3)获得namedWindow创建的子窗口:为了把子窗口的父窗口设置为picture控件,即把图片显示在控件上,用SetParent函数。
(4)加载图片并显示:imread、imshow。

MFC中Mat实现打开本地图片相关推荐

  1. MFC中Mat实现打开关闭本地摄像头

    静态文本的ID: IDC_STATIC_IMG 按钮的ID: IDC_BUTTON_openCAMARE IDC_BUTTON_CloseCamera 下面直接在(// QueryCaptureDlg ...

  2. 03_Windows10+OpenCV4.5.5打开本地图片进行图片处理 实时摄影并抓拍图片存入本机

    目录 添加外部库 添加头文件和命名空间 设计ui界面 1.打开本地图片 2.图像处理--腐蚀 封装函数 3.点击保存图片 定时器 4.打开摄像头 5.拍照 6.关闭摄像头 完整代码 可添加写入视频功能 ...

  3. Python tkinter 打开本地图片进行矩形框标注

    经常会遇到json报文中有图片URL,以及ROI的坐标x.y.w.h,然后需要验证下这个框在图片的什么位置,一般时候只能根据坐标值定性目测下.最近用tkinter写了个打开本地图片并且将rect的坐标 ...

  4. Android中通过第三方软件打开本地doc、pdf、ppt、text等文件功能的实现

    通过调用第三方软件打开文档 工具类 import android.content.Intent; import android.net.Uri;import java.io.File;public c ...

  5. MVC 中Simditor上传本地图片

    1.引用样式和js文件 <link href="~/Content/scripts/plugins/simditor/css/simditor.css" rel=" ...

  6. android本地图片,Android中ImageView实现选择本地图片并显示功能

    运行结果: 模拟器图库就三张 没办法~画质挺感人~ 一个隐式意图 布局文件: xmlns:tools="http://schemas.android.com/tools" andr ...

  7. fastreport打印指定路径图片显示不出来_报表工具中图片文件怎么展示---本地图片--网络图片--数据库图片...

    用于报表展示的图片来源有多种,如:数据库的图片字段.服务器本地图片.网络图片等,因此,报表工具也针对多种图片来源提供了多种多样的处理方式. 下面从不同的图片来源角度,举例介绍报表工具如何设置呈现. 图 ...

  8. 为你的水晶报表装载本地图片

    本文为解答该贴所做:http://topic.csdn.net/u/20090524/15/911fd15a-32c6-4be9-9aa1-3ee95365e7e3.html  并没有什么新内容,主要 ...

  9. 短视频系统源代码,加载本地图片和加载网络图片

    在短视频系统源代码中,上传照片时会涉及到加载本地图片或加载网络图片的情况,下面介绍一下相关代码 从布局开始 <?xml version="1.0" encoding=&quo ...

最新文章

  1. 点云深度学习的Pytorch框架
  2. 常用的6款Java开源报表制作工具
  3. CString对象的一种错误的使用方式
  4. 大数运算(6)——大数阶乘(求位数)
  5. nginx 高并发配置参数(转载)
  6. Mysql数据库函数(数字,字符串,日期时间)
  7. jQuery 倒计时
  8. 【Android游戏开发二十】物理游戏之重力系统开发,让你的游戏变得有质有量!...
  9. Spring Boot引起的“堆外内存泄漏”排查及经验总结 1
  10. 北京远卓科技有限责任公司2017笔试题
  11. Linux----UnZip命令
  12. 计算机网络:三种交换方式
  13. CAD中如何裁剪需要的区域
  14. python图形模块_Python图像处理PIL各模块详细介绍(推荐)
  15. unity物品图鉴(xml数据加载)
  16. iTextSharp,将多张图片合并生成PDF文件
  17. F28379D烧写双核程序(在线离线)
  18. ROS从入门到精通系列(十三)-- PR2移动双臂机器人基础
  19. ax的范数最大_各类范数定义
  20. win10蓝牙不能用

热门文章

  1. 【c#】Form调用百度地图api攻略及常见问题
  2. HiveSQL窗口函数
  3. 如何做自己的服务监控?spring boot 1.x服务监控揭秘
  4. 99% 的人都能看懂的「补偿」以及最佳实践
  5. 兼顾稳定和性能,58大数据平台的技术演进与实践
  6. solr源码分析之数据导入DataImporter追溯。
  7. 【风险管理】金融业务风控相关框架
  8. 拼多多提交赴美上市招股书 陆奇担任独立董事兼薪酬委员会主席
  9. 李开复:我在硅谷看到的最前沿科技趋势
  10. 如何通过github提升自己