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

来源:互联网 发布:为什么阿里云要备案 编辑:程序博客网 时间:2024/05/17 01:52



     如何将一张图像(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();//获得显示控件的DCHDC 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);}


0 0
原创粉丝点击