> 文档中心 > 视频输入输出4-抓帧

视频输入输出4-抓帧

从视频文件或捕获设备中抓取下一

virtual bool cv::VideoCapture::grab()

返回

在成功的情况下为真(非零)

该方法/函数从视频文件或相机中抓取下一帧,并在成功的情况下返回真(非零)。

该功能的主要用途是在摄像头环境中,尤其是在摄像头没有硬件同步的情况下。 也就是说,您为每个摄像头调用 VideoCapture::grab(),然后调用较慢的方法 VideoCapture::retrieve() 来解码并从每个摄像头获取帧。 这样就消除了去马赛克或运动 jpeg 解压缩等的开销,并且从不同相机检索到的帧将在时间上更接近。

此外,当连接的摄像头是多头(例如,立体摄像头或 Kinect 设备)时,从中检索数据的正确方法是先调用 VideoCapture::grab(),然后再调用 VideoCapture::retrieve() 使用不同的通道参数值进行一次或多次。

//抓取一张图void DlgVideo::on_btnGrabOne_clicked(){StopGrap();if (m_videoGrab.open(0)){if (m_videoGrab.grab()){Mat dstImage;if (m_videoGrab.retrieve(dstImage)){//OpenCV默认使用BGR格式,所以要转成RGB才能正常显示//cvtColor(dstImage, dstImage, COLOR_RGB2BGR);emit ShowImage(dstImage);}}m_videoGrab.release();}}