OpenCV学习6 读取视频并添加滑动条

在OpenCV中,通过版本3.0可以实现读取视频并添加滑动条的功能。代码在2.4.10版本上无法运行,主要问题在于编译器无法处理特定函数。运行结果展示了一个类似视频播放器的界面,支持S键暂停,R键继续播放。详细代码解释可参考指定博客链接。

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

在opencv中如何读取视频并添加滑动条。

少罗嗦先看东西

说明下,以下代码小弟在opencv2.4.10的版本中无法运行。主要是编译器无法读取g_cap.set( CAP_PROP_POS_FRAMES, pos);该函数。但是在opencv3.0版本中可以。所以以下代码小弟是在3.0版本中运行。

#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
#include<opencv2\opencv.hpp>
#include<iostream>
#include<fstream>

using namespace cv;
using namespace std;

int g_slider_position = 0;
int g_run = 1, g_dontset = 0;
VideoCapture g_cap;
void onTrackbarSlide(int pos, void*) {

	g_cap.set( CAP_PROP_POS_FRAMES, pos);//g_cap.set(cv::CAP_PROP_POS_FRAMES, pos);该句在open从v2.4.10中无法运行
	if (!g_dontset)
		g_run = 1;
	g_dontset = 0;
}
int main(int argc, char** argv) {
	
	namedWindow("lie1", WINDOW_NORMAL);//注意该句可以使你的窗口随意手动改变其大小  很重要哦!!!
	g_cap.open("D:\\迅雷下载\\阳光电影www.ygdy8.com.西虹市首富.HD.1080p.国语中英双字.mp4");
	int frames = (int)g_cap.get(CAP_PROP_FRAME_COUNT);
	int tmpw = (int)g_cap.get(CAP_PROP_FRAME_WIDTH);
	int tmph = (int)g_cap.get(CAP_PROP_FRAME_HEIGHT);
	cout << "Video has " << frames << "frames of dimension(" << tmpw << "," << tmph << ")." << endl;
	createTrackbar("Position", "lie1", &g_slider_position, frames, onTrackbarSlide);

	Mat frame;
	for (;;) {
		if (g_run != 0) {
			g_cap >> frame; if (frame.empty())break;
			int current_pos = (int)g_cap.get(CAP_PROP_POS_FRAMES);
			g_dontset = 1;
			setTrackbarPos("Position", "lie1", current_pos);
			imshow("lie1", frame);
			g_run -= 1;
		}
		char c = (char)waitKey(10);
		if (c == 's')
		{
			g_run = 1; cout << "Single step,run = " << g_run << endl;
		}
		if (c == 'r')
		{
			g_run = -1; cout << "Run mode,run = " << g_run << endl;
		}
		if (c == 27)
			break;


	}

	return 0;
}

运行结果

在这里插入图片描述
就像一个视屏播放器一样 你也可以按 S暂停 R 继续 (注意要使用英文输入法哦)

如果想要知道代码解释,小弟觉得才疏学浅还做不到逐句解释的地步。
下面推荐一个大神的博文写得非常仔细,每条语句都有详细的解释,良心博主小弟膜拜。
【opencv五】利用opencv给读入的视频添加拖动滑块 - yuanCruise - 优快云博客 https://blog.youkuaiyun.com/qiu931110/article/details/85173885

1735073

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值