一、新建项目

菜单,文件 - 新建 - 项目

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 imshow 透明 opencv showimage_vs2010






四、添加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控件上





opencv imshow 透明 opencv showimage_mfc_02