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

       利用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");
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值