场景:想要用 opencv 导入视频做运动监测
遇到的问题:发现视频不是按源的帧数播放,而是变慢了
通过OpenCV 的文档看到了:
“If it is too less, video will be very fast and if it is too high, video will be slow (Well, that is how you can display videos in slow motion). 25 milliseconds will be OK in normal cases.”
错误原因: opencv的cap.read()会有一定的缓存,不是读的实时帧.
尝试解决:
1. OpenCV默认输出格式为YUYV,可将其改成MJPG格式。(未解决我的问题)
...
capture.open(1);
//这里添加一行
//OpenCV 2
capture.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G'));
//or OpenCV 3
capture.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
//继续接下来的代码
capture.set(CV_CAP_PROP_FRAME_WIDTH, 2560); //设置捕获视频的宽度
capture.set(CV_CAP_PROP_FRAME_HEIGHT, 720); //设置捕获视频的高度
...