在mfc中用opencv显示视频为:
while(pFrame=cvQueryFrame(pCapture))
{
DrawPicToHDC(pFrame, IDC_STATIC);
cvShowImage("Show",pFrame);
if(cvWaitKey(33)>0)
break;
}
但如果将cvShowImage("Show", pFrame)注释掉,则cvWaitKey将不起作用。
在【1】中给出了隐藏窗口"raw"的代码:
cvNamedWindow("raw");
HWND hWnd = (HWND)cvGetWindowHandle("raw");
HWND hRawWnd = ::GetParent(hWnd); //获得父窗口句柄
ShowWindow(hWnd, 0); //0:的时候表示隐藏子窗口
ShowWindow(hRawWnd, 0); //0:的时候表示隐藏父窗口
自己直接用这个段代码时,产生错误:
'CWnd::ShowWindow' : function does not take 2 arguments
根据MSDN中【2,3】以及【4】,将ShowWindow改为::ShowWindo即可,就可以不产生opencv窗口,而cvWaitKey起作用。
但正如【5】所说,就是每次创建的时候一定先显示出来再隐藏,会造成屏幕上闪过一个窗口