(10条消息) 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;
  • 然后在Button控件函数中进行相关操作,如:

void Ctraining42Dlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知处理程序代码
    Mat srcImg=imread("1.jpg");resize (srcImg, srcImg ,Size(rect1.Width (),rect1 .Height ()) );imshow("src1",srcImg);
}

输出结果如图:

(0)

相关推荐