MFC与opencv窗口绑定




使用MFC界面显示OpenCV内容,其方法之一是将OpenCV与MFC窗口绑定,然后在MFC中直接使用OpenCV 中的代码进行输入和输出,这样方便代码的书写和搬用。这里用VS2012进行介绍。

OpenCv与MFC进行窗口绑定:

  • 首先:在解决方案资源管理中找到头文件,在头文件中找到“某某Dlg.h”的头文件文件,点进去之后在其中加好opencv的头文件,并添加好命名空间,如:
    include “opencv2/opencv.hpp”
    using namespace cv

  • 接下来,在解决方案资源管理中找到源文件,在源文件中找到“某某Dlg.cpp”的头文件文件,点进去之后在其中’OnInitDialog’类中,找到‘// TODO: 在此添加额外的初始化代码’进行添加要运行的控件进行初始化

  • 最后再对初始化的控件进行相应的操作

例如对Button按键和显示图片控件进行显示一张图像操作:

  • 首先创建Button控件和Picture control控件,如图:
    这里写图片描述
  • 然后添加头文件,如图:
    这里写图片描述

这里写图片描述

  • 接下来双击Bottom 控件或者在解决方案资源管理中找到源文件,在源文件中找到“training42Dlg.cpp”的头文件文件进入代码文件中,找到’OnInitDialog’类,在后面进行初始化
// TODO: 在此添加额外的初始化代码
    CWnd  *pWnd1= GetDlgItem (IDC_PIC1);//CWnd是MFC窗口类的基类,提供了微软基础类库中所有窗口类的基本功能。
    pWnd1->GetClientRect  (&rect1);//GetClientRect为获得控件相自身的坐标大小
    namedWindow("src1",WINDOW_AUTOSIZE );//设置窗口名
    HWND hWndl=(HWND )cvGetWindowHandle ("src1");//hWnd 表示窗口句柄,获取窗口句柄
    HWND hParent1=::GetParent (hWndl );//GetParent函数一个指定子窗口的父窗口句柄
    ::SetParent (hWndl, GetDlgItem (IDC_PIC1)->m_hWnd );
    ::ShowWindow (hParent1 ,SW_HIDE );//ShowWindow指定窗口中显示
//rect1变量要在头文件中定义为CRect类,如:
public:
    CRect rect1;
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 然后在Button控件函数中进行相关操作,如:
void Ctraining42Dlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知处理程序代码
    Mat srcImg=imread("1.jpg");
    resize (srcImg, srcImg ,Size(rect1.Width (),rect1 .Height ()) );
    imshow("src1",srcImg);
}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果如图:
这里写图片描述



https://www.zhihu.com/question/29611790
http://blog.csdn.net/u011432426/article/details/42874513







使用MFC界面显示OpenCV内容,其方法之一是将OpenCV与MFC窗口绑定,然后在MFC中直接使用OpenCV 中的代码进行输入和输出,这样方便代码的书写和搬用。这里用VS2012进行介绍。

猜你喜欢

转载自blog.csdn.net/u012541187/article/details/81095512
今日推荐