#include<iostream>
#include <opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/video/tracking.hpp>
using namespace std;
using namespace cv;
/*
任务要求:
下载一小视频,或是利用提供的视频bike.avi,读取并以原帧速率播放该视频。
*/
int main()
{
cv::VideoCapture capture;
capture.open("bike.avi");
if (!capture.isOpened())
return EXIT_FAILURE;
double rate = capture.get(CV_CAP_PROP_FPS);
bool stop(false); // 用于控制后面的while循环
cv::Mat frame; // 存储当前视频帧
// 根据帧速率计算帧之间的等待时间,单位ms
// 可通过修改此数值,让视频慢进或快进
// 时长要保证窗口有足够的时间进行刷新
int delay = 1000 / rate;
// 循环遍历视频中的全部帧
while (!stop) {
// 读取下一帧(如果有)
if (!capture.read(frame))
break;
cv::imshow("Extracted Frame", frame);
// 等待一段时间,或者通过按键停止
// 如果是按键停止,则返回按键ASCII码(>=0)
if (cv::waitKey(delay) >= 0)
stop = true;
}
int c = waitKey(0);
if (c == 27)
{
exit;
}
destroyAllWindows();
return 0;
}
opencv视频读取
最新推荐文章于 2022-04-14 16:15:07 发布