核心代码如下:
HWND hVideoWnd = capCreateCaptureWindow(NULL,WS_POPUP,0,0,200,300,hWnd,0); //创建摄像头视频窗口 if (capDriverConnect(hVideoWnd,0)) //连接驱动程序 { ::SetParent(hVideoWnd,hWnd); //设置父窗口 ::SetWindowLong(hVideoWnd,GWL_STYLE,WS_CHILD); ::SetWindowPos(hVideoWnd,NULL,10,10,300, 300, SWP_NOZORDER); ::ShowWindow(hVideoWnd,SW_SHOW); capPreviewRate(hVideoWnd,30); //设置预览速率 capPreview(hVideoWnd,true); //开始预览 } return TRUE;
其中HWnd 为你要显示摄像头视频的窗口句柄。
另外有人也可以启一个线程创建摄像头视频窗口,当子线程创建完视频窗口后,在主线程连接驱动捕获视频。这里需要注意的地方是因为在子线程创建窗口,所以子窗口的消息必然会被子线程接收。所以子线程必须有消息处理函数否则不能捕获视频。
还有一种捕获视频的方式是通过directshow 来采集摄像头图片。 这里不在详细论述可见博客