在MFC中显示opencv图像

来源:互联网 发布:黄渤的唱功 知乎 编辑:程序博客网 时间:2024/05/21 23:31

在MFC中,不能将突破从IplIamge或cv::Mat直接显示在图片控件中。需要先把IplImage或 cv::Mat先转换为CvvImage。

1.显示IplImage中图像

需要先把IplImage图像转换为CvvImage类型

IplImage* test_img = cvLoadImage("1.jpg",1);CDC* pDC = GetDlgItem(IDC_TEST_IMG)->GetDC();HDC hDC = pDC->GetSafeHdc();CvvImage cimg;cimg.CopyOf(test_img );CRect rect;GetDlgItem(IDC_TEST_IMG)->GetClientRect(&rect);cimg.DrawToHDC(hDC, &rect);ReleaseDC( pDC );

2.显示cv::Mat中图像

需要先把cv::Mat图像转化为IplImage图像,然后再转换为CvvImage类型。

Mat mat=imread("1.jpg");  CDC* pDC = GetDlgItem(IDC_TEST_IMG)->GetDC();HDC hDC = pDC->GetSafeHdc();IplImage img = mat;CvvImage cimg;cimg.CopyOf( &img );CRect rect;GetDlgItem(IDC_STATIC)->GetClientRect(&rect);cimg.DrawToHDC(hDC, &rect);ReleaseDC( pDC );

Example:
这里大图片描述

注意:

  1. 新版本的opencv不支持CvvImage,需要网上自行下载CvvImage.h和CvvImage.cpp并自行导入项目中。下载地址:http://download.csdn.net/detail/computerme/9468957
  2. 上面示例代码中的IDC_TEST_IMG既可以是MFC中Picture控件的ID,也可以是其他控件的ID,如Static Text控件的ID。
0 0
原创粉丝点击