MFC+OpenCV打开图像
来源:互联网 发布:军工大数据龙头股票 编辑:程序博客网 时间:2024/05/17 23:21
一、打开对话框时直接显示出图像。
1、建立一个基于对话框的工程AppDlg,在对话框中加入一个按钮IDC_CAMERA,标题为“打开图像” ;
2、添加CvvImage类;
3、为AppDlg添加以下public类型的变量:
CDC* pDC; //显示控件设备上下文 HDC hDC; //显示控件设备句柄 CRect rect; CvvImage cimg; cv::Mat image;
4、在对话框中添加Picture控件,为用于显示图像,其ID为IDC_PICTURE;
5、为AppDlg添加虚函数OnInitDialog,并加入以下代码:
BOOL CAppDlg::OnInitDialog(){CDialogEx::OnInitDialog();// TODO: 在此添加额外的初始化 pDC = GetDlgItem(IDC_PICTURE)->GetDC();//根据ID获得窗口指针再获取与该窗口关联的上下文指针 hDC= pDC->GetSafeHdc(); // 获取设备上下文句柄 GetDlgItem(IDC_PICTURE)->GetClientRect(rect); //获取box1客户区 return TRUE; // 异常: OCX 属性页应返回 FALSE}
注意:不能再OnInitDialog里显示图像,此时对话框还没有显示出来。
6、添加WM_PAINT消息,并添加以下代码:
void CHistDlg::OnPaint(){CPaintDC dc(this); // device context for painting// TODO: 在此处添加消息处理程序代码 Mat image = imread("111.jpg"); cimg.CopyOf( &IplImage(image) ); cimg.DrawToHDC(hDC, &rect); }此时,在对话框显示的显示的时候,就直接弹出图像111.jpg。这种显示图像的方式有很多应用场合。
【注释】
(1)HDC与CDC
HDC是设备描述句柄,简单的说,HDC就是句柄,是WINDOWS的一种数据类型;
CDC是MFC封装的Windows 设备相关的一个类,封装了几乎所有的关于HDC的操作,简单的说,CDC是MFC里的一个类。
也可以这样说,HDC定义的变量指向一块内存,这块 内存用来描述一个设备的相关的内容,所以也可以认为HDC定义的是一个指针;而CDC类定义一个对象, 这个对象拥有HDC定义的一个设备描述表,同时也包 含与HDC相关的操作的函数。
通过pDC获得hdc句柄:
HDC hdc=pDC->GetSafeHdc();
(2)为了减少使用IPlImage来定义一副图像(因为有手动释放内存的麻烦),所以,尽量使用Mat来定义图像,使用Mat的IPlImage()方法的直接进行Mat与IPlImage的转化,
二、使用按钮打开图像。
与上述的步骤基本相同,只是第6步不同而已。
0 0
- MFC+OpenCV打开图像
- [opencv]MFC打开摄像头显示图像
- MFC多文档中opencv处理图像打开、保存
- opencv--打开图像
- OpenCV 打开图像
- MFC+OpenCV打开摄像头
- OpenCV+MFC显示图像
- opencv+MFC显示图像
- OpenCV+MFC 显示图像
- OpenCV+MFC显示图像
- 在MFC中显示OpenCV的Mat格式图像和打开摄像头
- OpenCV打开和显示图像
- opencv 单文档 打开图像
- opencv打开一幅图像
- OpenCV + VS2012 打开图像/图像文件
- 【OpenCV】1st-打开图像
- opencv结合MFC打开图片
- OpenCV+MFC显示图像/视频
- Collection集合层次结构图
- 认识 EXT2 文件系统、磁盘分区 ( Partition )、文件系统:
- mysql索引
- leetcode 58. Length of Last Word
- 更新到Xcode 7.3 #import 不提示的问题
- MFC+OpenCV打开图像
- 《leetCode》:Kth Largest Element in an Array
- iOS开发学习之 - 深入学习UIButton(2)
- Java-Eclipse编辑窗口不见了
- 2546 饭卡(01背包,挺好的)
- 嵌入式linux常用shell指令
- Androdi AsyncTask
- Whu oj 1609 - Han Move
- 函数指针