您的位置:首页 > 运维架构

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

2017-06-22 11:04 423 查看
       利用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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: