一、新建项目
菜单,文件 - 新建 - 项目
Visual C++,MFC应用程序,名称为MFC_SHOWIMG
下一步
基于对话框,不使用Unicode库,在静态库中使用MFC,完成
二、配置OpenCV环境
可参考http://dczxxuhai.blog.163.com/blog/static/172216907201172624243741/
三、添加和设置控件
菜单,视图,工具箱,打开工具箱
选中Button控件
同理,添加Picture Control控件
右击Picture控件,属性,打开控件属性窗口,其ID为IDC_STATIC,修改Type为Rectangle,将Picture控件大小调整合适
右击添加的Button按钮,属性,可将Caption改为OpenImg,右击按钮,添加事件处理程序
选择BN_CLICKED,类列表为CMFC_SHOWIMGDlg,函数名为OnBnClickedOpenimg,添加编辑
四、添加OpenCV的CvvImage文件
右击解决资源方案管理器中的头文件,添加,现有项,选择CvvImage.h。
同样,源文件中添加CvvImage.cpp
注意:CvvImage.h和CvvImage.cpp在OpenCV2.4.3中没有,需要自己在网上下载。
opencv2.2以上不支持CvvImage的解决办法
五、添加代码
在类视图或解决方案管理器中双击打开MFC_SHOWIMGDlg.h
添加代码
#include "cv.h"
#include "highgui.h"
#include "CvvImage.h"
在MFC_SHOWIMGDlg.h文件中CMFC_SHOWIMGDlg类的声明中添加函数DrawPicToHDC()的声明
void DrawPicToHDC(IplImage *img, UINT ID);
在MFC_SHOWIMGDlg.cpp文件中添加函数
void CMFC_SHOWIMGDlg::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);
}
在新增按钮的响应函数中添加代码为如下
void CMFC_SHOWIMGDlg::OnBnClickedOpenimg()
{
// TODO: 在此添加控件通知处理程序代码
IplImage *image = NULL;//原始图像
if(image)
cvReleaseImage(&image);
image = cvLoadImage("demo.jpg",1);//显示图片
DrawPicToHDC(image,IDC_STATIC);
}
六、编译运行
点击OpenImg按钮即可打开demo.jpg并显示在Picture控件上