使用Opencv添加一个进度条来控制视频播放

转载自《学习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");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值