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


        假设希望对显示在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 控件上点击,则会在图像对应位置处画出一个白点。

  • 相关阅读:
    P1363-幻象迷宫
    P1582-倒水
    P2123-皇后游戏
    P1233-木棍加工
    P1052-过河
    P1541-乌龟棋
    P1736-创意吃鱼法
    P1417-烹调方案
    LeetCode--043--字符串相乘(java)
    LeetCode--041--缺失的第一个整数(java)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5160028.html
Copyright © 2020-2023  润新知