在【opencv四】利用opencv读取显示视频中读取的视频只能正常播放,无法像我们使用播放器时能在视频中拖动进度条。本文旨在提出一个滑块功能,实现视频的进度条拖动。而之前用到过的头文件highgui.hpp除了之前用到过的读取和显示功能外,还拥有上述提到的滑块功能,使得我们能够简单的跳转到视频的某一部分。利用cv::createTrackbar()来创建滑块,并指定该滑块显示在哪个窗口中。
下述代码的功能为:在基本查看器窗口中添加一个trackbar滑块,用于在视频文件中移动。
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <fstream>
using namespace std;
using namespace cv;
int g_slider_position = 0;
int g_run = 1;
int g_dontset = 0;
VideoCapture g_cap;
void onTrackbarSlide(int pos, void *)
{
g_cap.set(CAP_PROP_POS_FRAMES,pos);
if (!g_dontset)
{
g_run = 1;
g_dontset = 0;
}
}
int main()
{
namedWindow("Example3",WINDOW_AUTOSIZE);
g_cap.open("H:\\vs2017\\opencv_learning\\ConsoleApplication1\\video.mp4");
int frames = (int)g_cap.get(CAP_PROP_FR