VS2012中MFC使用Picture Control显示OpenCV处理的图像

11 篇文章 0 订阅

VS2012MFC中使用Picture Control控件显示OpenCV2.4.4版本中的cv::Mat类型的图片。

在高版本的OpenCV中没有CvvImage类,我们可以自己添加,下载CvvImage.hCvvImage.cpp文件拷贝到工程目录下,通过向工程中添加“现有项”把这两个文件添加工程。

我们需要用到CvvImage中的两个函数CopyOfDrawToHDCCopyOf的参数必须是IplImage类型的,因此我们需要先把cv::Mat类型的图片转换为IplImage类型的。

假设:

cv::Mat类型变量为  matImg;

IplImage类型变量为 ipImg;

CvvImage类型变量为:cvvImg ;

cv::MatIplImage转换过程为:

ipImg = IplImage(matImg);

IplImageCvvImage

cvvImg.CopyOf(&ipImg) ;

把图片放到Picture Control控件中

CDC * pDC = GetDlgItem(IDC_PICTURE)->GetDC() ;

 

HDC hDC = pDC->GetSafeHdc() ;

myImage.DrawToHDC(hDC , &rect) ;

 

ReleaseDC(pDC) ;

补充:

IplImagecv::Mat的转换:

cv ::Mat  matImg(&ipImg , 0 );

 

Picture Control控件中装载图片:

CImage image ;

image.Load(m_imagePath) ;//m_imagePath为图片路径

CRect rect ;

m_pictureCtl.GetClientRect(&rect) ;//获取图片控件客户区

 

CDC * pDC = m_pictureCtl.GetWindowDC() ;

image.Draw(pDC->m_hDC , rect) ;

ReleaseDC(pDC) ;

 

从打开颜色对话框中获取选中的颜色值:

COLORREF color = colorDlg.m_cc.rgbResult ;//colorDlg为打开的颜色对话框

m_colorArray[0] = GetRValue(color) ;

m_colorArray[1] = GetGValue(color) ;

m_colorArray[2] = GetBValue(color) ;

 

 

添加Vertical Scroll Bar后相应在类向导中添加WM_SCROLL消息响应:

响应函数

void CColorDetector_4Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

switch (nSBCode)

{

case SB_THUMBPOSITION:

m_scrollBar.SetScrollPos(nPos) ;

default:

break;

}

CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);

}

 

转换颜色空间的方法:

cv::cvtColor(image, converted, CV_BGR2Lab);//第三个参数是目的颜色空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值