假设希望对显示在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 控件操作图像的更多相关文章

  1. OpenCV 2.2版本号以上显示图片到 MFC 的 Picture Control 控件中

    OpenCV 2.2 以及后面的版本号取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序猿无法调用里面的显示函数来将图片显示到 MFC 的 Picture Co ...

  2. C++MFC之picture control控件铺满图片

    UpdateData(true); //更新路径公共变量     CString m_path = m_edit1.GetString();      if(m_path=="") ...

  3. mfc Picture Control 控件属性

    知识点: Picture Control 控件属性 CStatic类 图片控件 图片控件使用 一.图片控件属性 Picture Control 属性: Type:Frame //框架 Type:Etc ...

  4. 对话框上动态控件的创建、在Picture Control控件上显示图片

    1  MFC对话框之上的动态控件的创建 对话框上的控件是MFC类的一个具体对象. 当在对话框之上使用静态控件时,可以根据类向导来为每个控件添加消息.响应函数以及变量. 当需要在对话框中动态的创建某个控 ...

  5. picture control控件

    注意:picture control控件,需要先更改其ID再使用. CImage myImage; CFileDialog fileDlg(TRUE,NULL,NULL,OFN_ALLOWMULTIS ...

  6. MFC编程 | tab control控件的使用

    因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // tab control控件的使用 // 建立一个Cluster窗口,通过tab可以切换成C-Means和Fuzzy C- ...

  7. 【MFC】Tab Control 控件的使用(转)

    原文转自 http://blog.csdn.net/hustspy1990/article/details/5425365 1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control ...

  8. MFC Month Calendar Control 控件使用

    在上层软件编程中,往往须要提供一个月历控件让用户选择对应日期或者用此月历控件来强调特定的一天. MFC的 Month Calendar Control 控件自系统升级到 Windows 7 之后,对于 ...

  9. 利用MFC Picture Control控件 加载bmp,png

    1.在资源视图,选择PictureControl,并且在属性中把Type设置为Bitmap. 2.加载PNG CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC) ...

随机推荐

  1. hdu 1760 一道搜索博弈题 挺新颖的题目

    A New Tetris Game Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  2. Python中的继承

    继承: 面向对象程序语言的一个重要特点是继承.继承提供了在已存在类的基础上创建新类的方法.继承的子类 拥有被继承的父类的所有方法,在此基础上,子类还可以添加自己的专有方法.继承是类的强有力的特点.一些 ...

  3. 适用函数ALSM_EXCEL_TO_INTERNAL_TABLE把excel文件传输到内表中

    FM:ALSM_EXCEL_TO_INTERNAL_TABLE 是上载Excel文件的一个函数,但是这个函数有两个限制. 一是每个CELL只能导入前50个字符,二是如果超过9999行,行号会初始化为从 ...

  4. 手动配置S2SH三大框架报错(一)

    十二月 08, 2013 9:24:51 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...

  5. XenCenter注册码一年申请

    http://deliver.citrix.com/go/citrix/xenserver_activation?transactionID=2f65d2f134bf485d871291a566d67 ...

  6. 14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器

    14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器 这个章节描述技术关于移动或者copy ...

  7. java面向对象下:JavaXML解析技术

    20.JavaXML解析技术: XML概述:        XML可扩展标记性语言,用于数据表达和数据传递. XML语法规则:        合法DTDXML:1.内部DTD(和XML一起):2.外部 ...

  8. Delphi结构中使用String时遇到的内存泄露问题(没有利用String的引用计数自动销毁字符串的功能)

    先定义一个结构: TUserInfo = record  UserID: Integer; // 用户编号  UserName: string; // 用户名end; 然后编写如下代码: proced ...

  9. [Java学习笔记]Java Tips

    1.Java没有sizeof关键字 , volatile是java关键字.详情见:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166. ...

  10. linux nc命令使用详解

    功能说明:功能强大的网络工具 语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p ...