转载自《学习OpenCV》(中文版)
#include "stdafx.h"
#include<opencv2\opencv.hpp>
using namespace cv;
int g_slider_position = 0; //初始化进度条
CvCapture* g_capture = NULL; //定义g_capture为全局变量,因为回调函数需要使用CvCapture对象
//定义回调函数,滚动条位置将作为一个32位整数以参数形式传入
void onTrackbarSlide(int pos) {
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES, //以帧数来设置读入位置(用AVI_RATIO代替FRAMES实现通过视频长度比例来设置读入位置)
pos
);
}
int main(int agrc, char** argv)
{
cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);
g_capture = cvCreateFileCapture("D:\\学习工作\\大三下\\当代摄影测量\\What is Remote Sensing_标清.flv");
if (g_capture == NULL) {
printf("NO capture!\n");
return 1;
}
int frames = (int)cvGetCaptureProperty(
g_capture,
CV_CAP_PROP_FRAME_COUNT
);
if (frames != 0) {
cvCreateTrackbar("Position","Example3",&g_slider_position,frames,onTrackbarSlide);
}
IplImage* frame;
while (1) {
frame = cvQueryFrame(g_capture);
if (!frame) break;
cvShowImage("Example3", frame);
g_slider_position++;
cvSetTrackbarPos("Position", "Example3", g_slider_position);
char c = cvWaitKey(33);
if (c == 27) break;
}
cvReleaseCapture(&g_capture);
cvDestroyWindow("Example3");
}
使用Opencv添加一个进度条来控制视频播放
最新推荐文章于 2024-09-25 16:26:51 发布