VS2010 / MFC + OpenCV 2.4.1打开图片
2014-12-08 16:03
1056 查看
本人近期才开始学习MFC的相关知识,几乎从零开始。本周遇到了一些棘手问题,在使用VS2010和OpenCV制作一个打开图片的界面时,总是设置不好。从网上找了一些代码,总是因为版本问题无法运行。问题已经解决,现在整理一下思路。主要参考资料:http://jingyan.baidu.com/article/f71d60375ddd411ab641d1e3.html?qq-pf-to=pcqq.c2c
/article/8007573.html
本人在操作过程中的环境如下:
环境:在Windows8 x64,VS2010 / MFC+ OpenCV 2.4.8环境下,
目的:制作一个界面,通过点击按钮可以选择在picture控件中显示相应的图片。
出现的问题:在参考其他网络资料时,发现许多代码中使用了CvvImage这个类,但是,这个类在OpenCV2.2以后的版本中已经取消了。显示图片到MFC的Picture控件时需要这个类,所以,我们要下载CvvImage.h和CvvImage.cpp文件。
下载地址:http://dl.dbank.com/c04u6b8sxe或者
http://download.csdn.net/detail/connor_lele/4687210#comment
步骤
一、新建项目
单击菜单栏的文件->新建->项目
选择Visual C++,MFC应用程序,名称为CSDN_demo,选择好路径,然后单击“确定”
再单击“下一步”。此时,按照下图来选择各个项。
选择“基于对话框”、不使用Unicode库,选择“在静态库中使用MFC”,单击“完成”。
完成后,会出现一个编辑对话框的界面。
二、配置OpenCV环境
由于本人之前配置过环境,而且过程繁琐,因此,这里就不再重复。详细过程参考:/article/7912485.html
(当然有些人的做法是:在项目属性中加载lib文件:菜单 项目->属性-> 配置属性-> 链接器–>输入-> 附加依赖库中加入 cxcore200.lib cv200.lib highgui200.lib这三个库。 然后在 mymfc.h 的 #include "resource.h" 下加入如下代码:#include “cv.h” #include “highgui.h”。注意:用英文分号隔开。这种方法的有效性,本人并没有亲自验证过。 转自:/article/9434355.html)
三、添加和设置控件
在菜单栏中,视图->工具箱,此时就打开了控件的工具箱。选择工具箱中的Button控件,并将其拖到对话框相应的位置。
右击Button控件,选择属性,将其Caption改为OpenImg。
添加Picture Control控件到对话框的相应位置,并调整控件的大小。
右击Picture Control控件,选择属性,打开控件属性对话框,如下图,保持ID属性不变,修改Type属性为Rectangle。
现在为按钮添加处理程序,右击OpenImg按钮,选择“添加事件处理程序”,此时出现向导界面。消息类型选择BN_CLICKED,类列表选择CCSDN_deomDlg,函数处理 程序名选择OnBnClickedOpenImg,单击“添加编辑”。
四、添加OpenCV旧版本中的CvvImage.h和CvvImage.cpp文件
如首先添加CvvImage.h,则右击解决资源方案管理器中的“头文件”-> “添加”->” CvvImage.h”
然后再用类似的方式,在“源文件”的文件夹下添加“CvvImage.cpp”。
注意:CvvImage.h和CvvImage.cpp这两个文件要和本项目中的其他cpp文件等放在同一个文件夹中。
五、添加代码
在解决方案管理器中双击打开CSDN_demoDlg.h.
在#pragma once的下一行添加如下代码:
#include "cv.h"
#include "highgui.h"
#include "CvvImage.h"
注意:若"CvvImage.h"不在工程的包含目录中,则需要写成完整路径,并且“\”要写成“\\”,如:F:\\CvvImage。建议还是放在工程的包含目录中,这样使用相对路径可以避免一些不必要的麻烦。(这三行代码应该)
在CSDN_demoDlg.h文件中CSDN_demoDlg类的声明中添加函数DrawPicToHDC()的声明:void DrawPicToHDC(IplImage *img, UINT ID);。
(其实这个函数名DrawPicToHDC()不是固定的,只要函数声明和定义的名称一致就可以了。)
在CSDN_demoDlg.cpp中添加DrawPicToHDC()的函数定义:
在按钮OpenImg的响应函数中添加代码:
六、运行
/article/8007573.html
本人在操作过程中的环境如下:
环境:在Windows8 x64,VS2010 / MFC+ OpenCV 2.4.8环境下,
目的:制作一个界面,通过点击按钮可以选择在picture控件中显示相应的图片。
出现的问题:在参考其他网络资料时,发现许多代码中使用了CvvImage这个类,但是,这个类在OpenCV2.2以后的版本中已经取消了。显示图片到MFC的Picture控件时需要这个类,所以,我们要下载CvvImage.h和CvvImage.cpp文件。
下载地址:http://dl.dbank.com/c04u6b8sxe或者
http://download.csdn.net/detail/connor_lele/4687210#comment
步骤
一、新建项目
单击菜单栏的文件->新建->项目
选择Visual C++,MFC应用程序,名称为CSDN_demo,选择好路径,然后单击“确定”
再单击“下一步”。此时,按照下图来选择各个项。
选择“基于对话框”、不使用Unicode库,选择“在静态库中使用MFC”,单击“完成”。
完成后,会出现一个编辑对话框的界面。
二、配置OpenCV环境
由于本人之前配置过环境,而且过程繁琐,因此,这里就不再重复。详细过程参考:/article/7912485.html
(当然有些人的做法是:在项目属性中加载lib文件:菜单 项目->属性-> 配置属性-> 链接器–>输入-> 附加依赖库中加入 cxcore200.lib cv200.lib highgui200.lib这三个库。 然后在 mymfc.h 的 #include "resource.h" 下加入如下代码:#include “cv.h” #include “highgui.h”。注意:用英文分号隔开。这种方法的有效性,本人并没有亲自验证过。 转自:/article/9434355.html)
三、添加和设置控件
在菜单栏中,视图->工具箱,此时就打开了控件的工具箱。选择工具箱中的Button控件,并将其拖到对话框相应的位置。
右击Button控件,选择属性,将其Caption改为OpenImg。
添加Picture Control控件到对话框的相应位置,并调整控件的大小。
右击Picture Control控件,选择属性,打开控件属性对话框,如下图,保持ID属性不变,修改Type属性为Rectangle。
现在为按钮添加处理程序,右击OpenImg按钮,选择“添加事件处理程序”,此时出现向导界面。消息类型选择BN_CLICKED,类列表选择CCSDN_deomDlg,函数处理 程序名选择OnBnClickedOpenImg,单击“添加编辑”。
四、添加OpenCV旧版本中的CvvImage.h和CvvImage.cpp文件
如首先添加CvvImage.h,则右击解决资源方案管理器中的“头文件”-> “添加”->” CvvImage.h”
然后再用类似的方式,在“源文件”的文件夹下添加“CvvImage.cpp”。
注意:CvvImage.h和CvvImage.cpp这两个文件要和本项目中的其他cpp文件等放在同一个文件夹中。
五、添加代码
在解决方案管理器中双击打开CSDN_demoDlg.h.
在#pragma once的下一行添加如下代码:
#include "cv.h"
#include "highgui.h"
#include "CvvImage.h"
注意:若"CvvImage.h"不在工程的包含目录中,则需要写成完整路径,并且“\”要写成“\\”,如:F:\\CvvImage。建议还是放在工程的包含目录中,这样使用相对路径可以避免一些不必要的麻烦。(这三行代码应该)
在CSDN_demoDlg.h文件中CSDN_demoDlg类的声明中添加函数DrawPicToHDC()的声明:void DrawPicToHDC(IplImage *img, UINT ID);。
(其实这个函数名DrawPicToHDC()不是固定的,只要函数声明和定义的名称一致就可以了。)
在CSDN_demoDlg.cpp中添加DrawPicToHDC()的函数定义:
void CCSDN_demoDlg::DrawPicToHDC(IplImage *img, UINT ID) { CDC *pDC = GetDlgItem(ID)->GetDC(); HDC hDC= pDC->GetSafeHdc(); CRect rect; GetDlgItem(ID)->GetClientRect(&rect); CvvImage cimg; cimg.CopyOf( img ); // 复制图片 cimg.DrawToHDC( hDC, &rect ); //将图片显示到图片控件指定区域内。 ReleaseDC( pDC ); }
在按钮OpenImg的响应函数中添加代码:
void CCSDN_demoDlg::OnBnClickedOpenImg() { IplImage *image=NULL; //原始图片 if(image) cvReleaseImage(&image); CFileDialog dlg( TRUE,_T("*.bmp"), NULL, OFN_FILEMUSTEXIST| OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, _T("imagefiles (*.bmp; *.jpg) |*.bmp; *.jpg; *.jpeg | All Files (*.*) |*.*||"),NULL ); //选项图片的约定。 dlg.m_ofn.lpstrTitle= _T("打开图片"); //打开文件对话框的标题吗 if(dlg.DoModal() != IDOK ) //判断是否获得图片 return; CStringmPath = dlg.GetPathName(); //获取图片路径 IplImage*ipl = cvLoadImage( mPath, 1 ); //读取图片、缓存到一个局部变量ipl中 if(!ipl ) //判断是否成功读取图片 return; ShowImage(ipl,IDC_STATIC); // 调用显示图片函数 cvReleaseImage(&ipl ); //释放ipl占用的内存 }
六、运行
相关文章推荐
- VS2010 / MFC + OpenCV 2.4.1 环境搭建+首次打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.9打开图片
- VS2010MFC打开图片 + OpenCV环境配置
- VS2010 / MFC + OpenCV 2.4.3 打开图片
- VS2010 / MFC + OpenCV 2.4.9打开图片
- 用MFC编写opencv界面(打开图片)
- VS2012 opencv2.4.13+MFC打开一张指定位置的图片
- 【C++ MFC+opencv】打开文件夹中的图片并在picture控件中显示
- VS2013 / MFC + OpenCV 2.4.9打开图片
- 显示图片,VS2010, MFC, OpenCV2
- MFC开发Opencv3.0打开文件夹选择图片进行检测
- VS2010配置opencv2.4.8,用MFC创建显示一个图片的简单程序
- Opencv在MFC中打开任意路径的图片
- opencv结合MFC打开图片
- MFC+opencv打开文件夹选择单张或多张图片
- vs2010 + opencv用自定义工具打开图片并显示