视频有一系列图像构成,这些图像称为帧,帧是以固定的时间间隔获取的(称为帧速率,通常用帧/秒表示),据此可以显示运动中的场景。
*读取视频序列
可以用cv::VedioCapture类创建的实例从视频序列读取帧。
效果:
帧率为:
拍摄工具为小米4C
代码:
int main()
{
cv::VideoCapture capture("library.mp4");
if (!capture.isOpened())
{
std::cout << "读取失败" << std::endl;
return 1;
}
double rate = capture.get(CV_CAP_PROP_FPS);
std::cout << "帧率:" << rate << std::endl;
bool stop(false);
cv::Mat frame;
int delay = 1000 / rate;
cv::namedWindow("Extracted Frame");
while (!stop)
{
if (!capture.read(frame))
{
break;
}
cv::imshow("Extracted Frame", frame);
cv::waitKey(delay);
}
cvWaitKey();
return 0;
}
*处理视频帧
采用函数指针指向回调函数处理视频帧。
效果: