码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV 通过 MFC 的 Picture Control 控件操作图像

时间:2014-06-08 15:11:14      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:picture control 控件   操作图片   opencv   mfc   鼠标消息   

如果希望对显示在MFC Picture Control 控件里的图像进行操作,比如画线画点之类的,可以利用 OpenCV 结合 MFC 本身的鼠标响应函数来实现。

如何将图像显示到 Picture Control 控件不谈,本文是采用的这篇博客所介绍的方法实现的。 点击打开链接 

给对话框添加 WM_LBUTTONDOWN 鼠标左键点击消息,在消息响应函数中添加如下代码:

void CMFCOpenCVShowDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	CRect myshowwinrect;
	GetDlgItem(IDC_STATIC_SHOW)->GetWindowRect(myshowwinrect);//获得屏幕坐标
	ScreenToClient(&myshowwinrect);//转到客户区相对坐标
	if (point.x >= myshowwinrect.left && point.x <= myshowwinrect.right && point.y >= myshowwinrect.top && point.y <= myshowwinrect.bottom)//鼠标在Picture Control 控件上进行了单击操作
	{
		int img_x = (double)img->width*(double)(point.x - myshowwinrect.left) / (double)myshowwinrect.Width();//计算鼠标点击横坐标相对图片上的横位置
		int img_y = (double)img->height*(double)(point.y - myshowwinrect.top) / (double)myshowwinrect.Height();
		int changepoint = img_y*img->widthStep / sizeof(uchar)+img_x*img->nChannels;

		//将图片的相应点标记为白色
		img->imageData[changepoint+0] = 255;
		img->imageData[changepoint+1] = 255;
		img->imageData[changepoint+2] = 255;
		drawpic(img, IDC_STATIC_SHOW);
	}
	CDialogEx::OnLButtonDown(nFlags, point);
}
到此,鼠标在 Picture Control 控件上点击,则会在图像相应位置处画出一个白点。

OpenCV 通过 MFC 的 Picture Control 控件操作图像,布布扣,bubuko.com

OpenCV 通过 MFC 的 Picture Control 控件操作图像

标签:picture control 控件   操作图片   opencv   mfc   鼠标消息   

原文地址:http://blog.csdn.net/weixinhum/article/details/28880721

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!