最简单的实现步骤哦
/***************************************************
*
*把图片显示在Static控件中(PICTRUE控件也是一样,就是空间的ID不同而已)
*
**************************************************/
//加载图片
IplImage* img = cvLoadImage("ba.jpg");
//把图片转换格式(由CImage类自己完成)
m_Image.CopyOf(img);
//获得控件dc
HDC dc = GetDlgItem(IDC_STATIC_PICTURE)->GetDC()->m_hDC;
//得到控件的大小
CRect r;
GetDlgItem(IDC_STATIC_PICTURE)->GetClientRect(r);
//显示图片
m_Image.DrawToHDC(dc,r);
//其中CImage类的成员函数CopyOf和DrawToHDC起了关键性的作用
//CopyOf的作用相当于转换格式(我也不是十分明白,没见过专业讲解 )
//DrawToHDC是把图片显示在指定的区域,第一个参数是要显示的窗口等
//的dc句柄,第二个参数是要显示区域的大小
//Opencv相关的头文件和链接库在stdAfx.h中
// 相信你看完这简单的几行代码后,自己就完全能够把任何Opencv下的图片
//在mfc中显示了(包括视频和摄像机)恭喜你又有了一点收获
拓展1
摄像头在控件中显示,只需将上文中家在图像换成如下代码:
//获取摄像头
CvCapture* pCapture = cvCreateCameraCapture(-1);
//从摄像头获取帧
cvGrabFrame(pCapture);
//取回获取的帧
IplImage *frame2=cvRetrieveFrame(pCapture);
拓展2
打开多种类型的文件
//文件对话框对象窗口
CFileDialog dlg(TRUE,_T("*.bmp")," ",OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,"image file(*.bmp;*.jpg)|*.bmp;*.jpg|All Files(*.*)|*.*||",NULL);
if(dlg.DoModal() == IDOK)
{
CString path = dlg.GetPathName();//得到完整的文件名,包括目录名和扩展名如:c:\test\test1.txt
IplImage *frame1 = cvLoadImage(path,1);//从路径获取图像
/******************************/
m_Image.CopyOf(frame1);
//获得控件dc
HDC dc = GetDlgItem(IDC_ShowImg)->GetDC()->m_hDC;
//得到控件的大小
CRect r;
GetDlgItem(IDC_ShowImg)->GetClientRect(r);
//显示图片
m_Image.DrawToHDC(dc,r);
}