opencv2在MFC对话框控件中显示图片播放视频

来源:互联网 发布:淘宝新店货源 编辑:程序博客网 时间:2024/04/19 21:31

       利用opencv在MFC对话框相关控件上显示图片或者播放视频的方法很多,如使用opencv的CvvImage类,将Mat数据转换到CImage,使用MFC绘图函数等,但个人认为将opencv的显示窗口贴到MFC控件上,最为直接,最符合opencv玩家的编程习惯。

   这种方法在对话框上拖入Text Control 控件,添加变量名为:m_staticCamera1。在创建显示窗口时,添加如下代码:

namedWindow("IPCamera", 0);CRect rect_CAM1;m_staticCamera1.GetClientRect(&rect_CAM1);int winWindth = rect_CAM1.Width();int winHeight = rect_CAM1.Height();resizeWindow("IPCamera", winWindth, winHeight);HWND hWnd_CAM1 = (HWND)cvGetWindowHandle("IPCamera");HWND hParent_CAM1 = ::GetParent(hWnd_CAM1);::SetParent(hWnd_CAM1, GetDlgItem(IDC_STATIC_CAMERA1)->m_hWnd);::ShowWindow(hParent_CAM1, SW_HIDE); //隐藏运行程序框GetDlgItem(IDC_STATIC_CAMERA1)->ShowWindow(0);//创建时不显示播放控件

注:这种方法在打开窗口显示时会出现闪屏现象,为避免这种现象,需将窗口的创建放在对话框的初始化函数中,TrackerDlg为对话框类名,如下:

BOOL TrackerDlg::OnInitDialog(){    CDialogEx::OnInitDialog();    // TODO: Add extra initialization here     //上面创建显示窗口代码粘贴处}
显示时,添加代码:

imshow("IPCamera", Img);GetDlgItem(IDC_STATIC_CAMERA1)->ShowWindow(1); //显示播放控件
关闭时,添加代码:
GetDlgItem(IDC_STATIC_CAMERA1)->ShowWindow(0);//GetDlgItem(IDC_STATIC_CAMERA1)->Invalidate();destroyWindow("IPCamera");
阅读全文
2 0