简单的读入视频:
#include "opencv2/opencv.hpp"
int main(int argc, char** argv) {
namedWindow("Example3", WINDOW_FREERATIO);
VideoCapture cap;
cap.open("F:/test/white-lilies.mp4");
Mat frame;
for (;;) {
cap >> frame;
if (frame.empty()) break;
imshow("Example3", frame);
if (waitKey(33)>=0) break;
}
return 0;
}
此时的视频播放器不可以快速在视频中进行跳转,接下来添加一个滑动条使用户可以进行视频跳转。按S键执行单步模式,按R键来恢复连续视频播放模式。无论何时通过滑动条跳转到视频一个新的时间点,都会使用单步模式在那个点进行播放。
HighGUI工具提供了许多简单的工具用于处理视频和图像,要创建一个滑动条,可以调用cv::createTrackbar()并指明要在哪个窗口显示,还需要一个能够执行重新定位的回调函数。
#include "opencv2/opencv.hpp"
#include <iostream>
#include <fstream>
using namespace cv;
using namespace std;
int g_slider_position = 0; //存储滑动条的位置
int g_run = 1, g_dontset = 0; //以单步模式开始。g_run将在新的跳转触发之后置0。 定义g_dontset避免在调整进度条位置的时候触发单步模式
VideoCapture g_cap; //帧读取结构定义为全局变量,以便回调函数的访