mfc窗口显示视频+抓图

  • Post author:
  • Post category:其他


利用opencv窗口显示视频的原理与显示图片的原理差不多:


这就是用USB网络摄影头的成像效果,做的时候,发现这个程序现在存在一个问题,就是在关闭窗口后,进程中仍然有这个程序在执行:

解决这个问题有两个方法:

第一种:

在while循环中加入一个标志m_flag,在退出程序时,将其置为1即可,程序如下:

while(1)

{


if(m_flag==1) break;

pFrame = cvQueryFrame( pCapture );

//显示图像

CDC *pDC = GetDlgItem(IDC_STATIC1)->GetDC();

HDC hDC=  pDC->GetSafeHdc();

CRect rect;

GetDlgItem(IDC_STATIC1)->GetClientRect(&rect);

cimg.CopyOf(pFrame);

cimg.DrawToHDC(hDC,&rect);

//下面是重点,可以实现拖拽

MSG message;

if(::PeekMessage(&message,NULL,0,0,PM_REMOVE))

{


::TranslateMessage(&message);

::DispatchMessage(&message);

}

}

第二种:

不要用while循环,将  pFrame = cvQueryFrame(pCapture )放在OnTimer()中,然后在退出程序时,用KillTimer(1)即可结束进程。

我的程序采用的是第一种方法,但我感觉第二种方法更具有拓展性。

稍后我会把源代码传到网上,供大家学习交流。



版权声明:本文为fuyanzhi1234原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。