视频播放控制

本文介绍了一个使用OpenCV和C++实现的简单应用程序,该程序可以打开并播放指定路径的视频文件。通过创建滚动条来控制视频播放的位置,演示了如何使用OpenCV的API来读取视频帧并显示它们。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "cv.h"
#include  "highgui.h"

int  g_slider_position = 0;//滚动条位置变量
CvCapture* g_capture   =NULL;//定义视频结构指针

void onTrackbarSlide( int pos ) {//定义回调函数,其作用就是更新滚动条的位置
    cvSetCaptureProperty(      //设置CvCapture对象的各种属性
		g_capture,
		CV_CAP_PROP_POS_FRAMES,//回调函数的参数根据系统需要进行设置,也就是必须要有int型形参
		pos
		);
}
int main( int argc, char** argv ) {
    cvNamedWindow( "Example3",CV_WINDOW_AUTOSIZE );//建立视频窗口
	g_capture = cvCreateFileCapture( argv[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 );
	char c = cvWaitKey(33);//这么以来,差不多每秒播放30帧,因为是33ms,而且这个函数返回按键的ascii码,这样就能退出循环了
	if( c==27 ) break;
}
cvReleaseCapture( &g_capture ); //这两步都是必须的
cvDestroyWindow( "Example3" );
return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值