《学习OpenCV(中文版)》第4章 练习4

这篇博客介绍了如何利用OpenCV的C++接口创建一个简单的GUI,来控制视频的播放。通过创建CvCapture对象从文件加载视频,并设置两个滑动条分别控制视频帧位置和播放/暂停状态。博客详细展示了代码实现过程,包括获取视频帧数、创建Trackbar以及处理播放逻辑。

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

CvCapturecapture_GUI_4 = NULL;
int position_p = 0;		//用来记录滚动条的位置
int position_p_g = 0;	//用来记录滚动条的位置,且以10为步长跳进
void onPositionChange(int pos) {
	position_p_g = pos;
	cvSetCaptureProperty(capture_GUI_4CV_CAP_PROP_POS_FRAMESpos);
}
int on_or_off_p = 0;
bool on_off = true;		//true时播放,false暂停
void onOn_or_OffChange(int pos) {
	on_off = !on_off;	
}
void myGUI4() {
	cvNamedWindow("Video");
	capture_GUI_4 = cvCreateFileCapture("盲探.rm");
	int frame_count = cvGetCaptureProperty(capture_GUI_4CV_CAP_PROP_FRAME_COUNT);
	if(frame_count > 0) {
		cvCreateTrackbar("Position""Video", &position_pframe_countonPositionChange);
		cvCreateTrackbar("On_or_Off""Video", &on_or_off_p, 1, onOn_or_OffChange);
	}
	int fps = 1000/cvGetCaptureProperty(capture_GUI_4CV_CAP_PROP_FPS);		//视频的播放频率,用于cvWaitKey()
	IplImageframe = NULL;
	while(true) {
		if(on_off) {	//只有播放状态时才读取下一帧
			frame = cvQueryFrame(capture_GUI_4);
			position_p_g += 10;	//以10为步长跳进
			cvSetTrackbarPos("Position""Video"position_p_g);	//设置滚动条
			//cvSetCaptureProperty(capture_GUI_4, CV_CAP_PROP_POS_FRAMES, position_p_g);	//似乎不设置这个也可以,有上一个就可以了
		}
		if(frame!=NULL) {
			cvShowImage("Video"frame);
		} else {
			break;
		}
		if(cvWaitKey(fps) == 27) break;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值