您的位置:首页 > 运维架构

MFC中picture控件中利用OpenCV显示图像

2016-05-16 09:12 696 查看
如何将一张图像(Mat类型或者IplImage* 类型)显示到指定图像控件中?经过一系列探索,解决方法如下:

OpenCV程序在MFC中实现的方法通常是采用CvvImage类,这个类的成员函数DrawToHDC可将位图整体经缩放后显示到视图窗口中,但是我的opencv版本为2.4.9,没有这个类,因此需要手动添加”CvvImage.h”和”CvvImage.cpp”.这个自己可以在网上自行下载。

那如何将IplImage*类型的图像转化为CvvImage类型呢,很简单,因为CvvImage类有CopyOf(IplImage*)函数。代码如下:

void ImageShow(IplImage* img,UINT ID){
CDC *pDC=GetDlgItem(ID)->GetDC();//获得显示控件的DC
HDC hDC=pDC->GetSafeHdc();//获取设备句柄来进行绘图操作
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
CvvImage cimg;
cimg.CopyOf(img);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
}


如果要显示Mat类型呢,可以先将Mat类型转换为IplImage类型,再转换为CvvImage类型:

void ImageShow(Mat img, UINT ID)
{

CDC *pDC = GetDlgItem(ID)->GetDC();//获得显示控件的DC
HDC hDC = pDC->GetSafeHdc();//获取设备句柄来进行绘图操作
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);

CvvImage cimg;
IplImage img_temp = IplImage(img);//转化为IplImage类型
cimg.CopyOf(&img_temp);
cimg.DrawToHDC(hDC, &rect);
ReleaseDC(pDC);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: