【OpenCV, MFC】利用MFC和OpenCV通过系统对话框打开和保存图片
打开图片:
- void CImageProDlg::OnImageopen()
- {
- // TODO: 在此添加命令处理程序代码
- Invalidate();
- CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_READONLY,
- TEXT("Supported Types (*.jpg;*.png;*.gif;*.bmp;...)|*.jpg;*.png;*.gif;*.bmp|Tiff(*.tiff;*.tif)|*.tiff;*.tif|All Files(*.*)|*.*||"), NULL);
- dlg.m_ofn.nFilterIndex = ;
- dlg.m_ofn.hwndOwner = m_hWnd;
- dlg.m_ofn.lStructSize = sizeof(OPENFILENAME);
- dlg.m_ofn.lpstrTitle = TEXT("Opening Image...\0");
- dlg.m_ofn.nMaxFile = MAX_PATH;
- if (dlg.DoModal() == IDOK)
- {
- m_path = dlg.GetPathName();
- m_capacity = TRUE;
- UpdateData(FALSE);
- }
- else
- return;
- //左边图片控件显示图片
- //string s_path(m_path.GetBuffer()); //这样就要#include <string.h>
- char *s_path;
- s_path = m_path.GetBuffer(m_path.GetLength()); //将CString转化为Char * 格式
- //m_StaticPath.SetWindowTextA(m_path); //将图片路径显示到静态文本控件
- Mat Mat_image = imread(s_path, );
- SavedImage = Mat_image; //全局变量
- IplImage image = Mat_image;
- DrawPicToHDC(&image, ID_SHOWLEFT);
- }
保存图片:
(需输入完整路径,包括拓展名)
- void CImageProDlg::OnSaveas()
- {
- // TODO: 在此添加命令处理程序代码
- if (m_capacity)
- {
- CFileDialog dlg(FALSE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_READONLY,
- TEXT("Supported Types (*.jpg;*.png;*.gif;*.bmp;...)|*.jpg;*.png;*.gif;*.bmp|Tiff(*.tiff;*.tif)|*.tiff;*.tif|All Files(*.*)|*.*||"), NULL);
- dlg.m_ofn.nFilterIndex = ;
- dlg.m_ofn.hwndOwner = m_hWnd;
- dlg.m_ofn.lStructSize = sizeof(OPENFILENAME);
- dlg.m_ofn.lpstrTitle = TEXT("Saving Image...[Meantime input extension name! ]\0");
- dlg.m_ofn.nMaxFile = MAX_PATH;
- CString strPath(""), strExt("");
- char write[];
- if (dlg.DoModal() == IDOK)
- {
- strPath = dlg.GetPathName(); //文件名
- char *s_path;
- s_path = strPath.GetBuffer(strPath.GetLength());
- imwrite(s_path, SavedImage);
- strPath.ReleaseBuffer();
- }
- }
- else
- MessageBox("还未选择原始图片,无法保存图片!");
- }
【OpenCV, MFC】利用MFC和OpenCV通过系统对话框打开和保存图片的更多相关文章
- MFC中快速应用OpenCV(转)
转载链接:http://wiki.opencv.org.cn/index.php/MFC%E4%B8%AD%E5%BF%AB%E9%80%9F%E5%BA%94%E7%94%A8OpenCV 简介和缘 ...
- opencv与mfc显示图片操作,MFC的鼠标响应在opencv图片上失效,opencv滚轮事件没有响应问题描述解决。
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11588758.html 用mfc 与OPENCV编写成. 出了很多冲突异常事件导致鼠标操作没有 ...
- VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)
VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html 上一讲中讲了VS20 ...
- opencv学习_15 (利用cmake查看opencv的源码)
当我们有时想查看opencv自带的函数的源代码,比如函数cvCreateImage, 此时我们选中cvCreateImage, 点击鼠标右键->转到定义,我们会很惊讶的发现为什么只看到了cvCr ...
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...
- 利用Java调用OpenCV进行人脸识别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt409 今天我准备学习如何用Java来进行人脸检测.人脸检测有助于在任何数字图 ...
- 基于opencv和qt的人脸检测小系统
摘要:利用opencv读取视频.图片并检测人脸,利用QT显示窗口,功能选择等 环境:Ubuntu18.04.OpenCV3.4.0.QT5.10.1 效果图: 代码如下(比较简单没什么注释): mai ...
- 利用cmake查看opencv的源码
当我们有时想查看opencv自带的函数的源代码,比如函数cvCreateImage, 此时我们选中cvCreateImage, 点击鼠标右键->转到定义,我们会很惊讶的发现为什么只看到了cvCr ...
- OpenCV - Android Studio 2.2 中利用CAMKE进行OpenCV的NDK开发
我在http://www.cnblogs.com/fx-blog/p/8206737.html一文中提到了如何在Android Studio中Java层导入OpenCV(包含opencv_contri ...
随机推荐
- maven pom 详细配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 【WIP_S2】递归
创建: 2018/01/14 递归 定义 自己召唤自己 通用形式 if (基本情况A的处理) { ... return 值A } else if (基本情况B的处理) ...
- Springboot 相关注解大全
1.Spring注解 1.@Autowired 标注在方法,Spring容器创建当前对象,就会调用方法,完成赋值:方法使用的参数,自定义类型的值从ioc容器中获取自动装配; Spring利用依赖注入( ...
- spring 异常处理
1. 实现接口 HandlerExceptionResolver 捕获异常 2.@ExceptionHandler 在方法添加注解,捕获本地controller异常 3.@ControllerAdvi ...
- Windows Server 2008 R2关闭FTP服务
公司在ZJ的项目给了一台互联网可以访问的测试服务器,但是只给了三个访问端口,而且还做了映射. 映射信息如下:[1050->3389,1051->50000,1053->21] 其中1 ...
- ASP.NET 简介(转自Wiki)
ASP.NET是由微软在.NET Framework框架中所提供,开发Web应用程序的类库,封装在System.Web.dll文件中,显露出System.Web名字空间,并提供ASP.NET网页处理. ...
- 304 Range Sum Query 2D - Immutable 二维区域和检索 - 不可变
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 上图子矩阵左上角 (row1, col1) = (2, 1) ,右 ...
- Kali Linux的介绍
Kali Linux是什么? Kali Linux是一个渗透测试平台兼安全审计平台,它集成了多款漏洞检测.目标识别和漏洞利用工具. Kali Linux是专门用于渗透测试的Linux操作系统:基于De ...
- python2 'str' object has no attribute 'decode'
'.decode('hex') 上述代码,报错: 'str' object has no attribute 'decode' 查找原因: https://stackoverflow.com/ques ...
- Java开发笔记(九十二)文件通道的基本用法
前面介绍的各色流式IO在功能方面着实强大,处理文件的时候该具备的操作应有尽有,可流式IO在性能方面不尽如人意,它的设计原理使得实际运行效率偏低,为此从Java4开始增加了NIO技术,通过全新的架构体系 ...