打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
OpenCV读取图像显示在MFC窗口上

                             OpenCV读取图像显示在MFC窗口上

                 1.   在MFC上创建一个图片控件,自己修改ID,比如IDC_PICTURE,并且添加对应的变量 CStatic m_PictureControl

                 2.   在打开图片的按钮触发事件中添加如下代码:

  1. namedWindow("ImageShow", CV_WINDOW_KEEPRATIO); // 用OpenCV创建一个窗口
  2. CRect cWindowRect;
  3. m_PictureControl.GetClientRect(&cWindowRect); // 获取控件窗口大小
  4. int nWindowWidth = cWindowRect.Width();
  5. int nWindowHeight = cWindowRect.Height();
  6. resizeWindow("ImageShow", nWindowWidth, nWindowHeight);
  7. hPictureWindow = (HWND)cvGetWindowHandle("ImageShow"); // 获取OpenCV窗口的句柄
  8. hParentWindow = ::GetParent(hPictureWindow);
  9. ::SetParent(hPictureWindow, GetDlgItem(IDC_PICTURE)->m_hWnd); // 关联OpenCV窗口和MFC的控件窗口
  10. ::ShowWindow(hParentWindow, SW_HIDE);
  11. GetDlgItem(IDC_PICTURE)->ShowWindow(0); // 开始不显示图片控件
  12. CFileDialog dlg(TRUE, _T("*,JPG"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("image files (*.jpeg; *.jpg; *.bmp;*.png) |*.jpeg; *.jpg; *.bmp | All Files (*.*) |*.*||"));
  13. if (IDOK == dlg.DoModal())
  14. m_strPath = dlg.GetPathName();
  15. string strName = CT2A(m_strPath); // CString和string之间的类型转换
  16. sourceImage = imread(strName);
  17. // m_nChannels = sourceImage.channels();
  18. imshow("ImageShow", sourceImage);
  19. GetDlgItem(IDC_PICTURE)->ShowWindow(1); // 显示图片控件

                3.   在关闭图像时,只需要加入如下代码:

  1. GetDlgItem(IDC_PICTURE)->ShowWindow(0);
  2. destroyWindow("ImageShow"); // 销毁窗口
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MFC文本控件设置背景透明后出现文字重叠。
mfc中使用Tab Control控件
MFC笔记
怎么改变属性页中按钮的位置和隐藏一些按钮
VS2005中 Tab Control控件的使用
Spy++原理初探
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服