OpenCV加载视频

一、加载视频

	//视频路径
	QString appPath = QCoreApplication::applicationDirPath();
	QString videoPath = appPath + "/vtest.avi";
	cv::VideoCapture capture;
	capture.open(videoPath.toStdString(),CAP_FFMPEG);
	//从摄像头读取
	//capture.open(0, CAP_DSHOW);

	cv::Mat frame;
	while (true) {
		//读帧
		bool ret = capture.read(frame);
		if (!ret)
			break;
		imshow("frame", frame);
		//添加帧处理 等待 100 毫秒,检查用户是否按下键盘上的按键
		char c = waitKey(100);
		//按下的是 ESC 键 (ASCII 值为 27),则跳出循环,停止播放视频
		if (c == 27)
			break;
	}
	waitKey(0);
	destroyAllWindows();

二、获取视频属性

	//视频路径
	QString appPath = QCoreApplication::applicationDirPath();
	QString videoPath = appPath + "/vtest.avi";
	cv::VideoCapture capture;
	capture.open(videoPath.toStdString(),CAP_FFMPEG);

	qDebug() << u8"高:" << capture.get(CAP_PROP_FRAME_HEIGHT);
	qDebug() << u8"宽:" << capture.get(CAP_PROP_FRAME_WIDTH);
	qDebug() << u8"帧率FPS:" << QString::number(capture.get(CAP_PROP_FPS));
	qDebug() << u8"总帧率:" << capture.get(CAP_PROP_FRAME_COUNT);

三、保存视频

	//视频路径
	QString appPath = QCoreApplication::applicationDirPath();
	QString videoPath = appPath + "/vtest.avi";
	cv::VideoCapture capture;
	capture.open(videoPath.toStdString(), CAP_FFMPEG);


	qDebug() << u8"高:" << capture.get(CAP_PROP_FRAME_HEIGHT);
	qDebug() << u8"宽:" << capture.get(CAP_PROP_FRAME_WIDTH);
	qDebug() << u8"帧率FPS:" << capture.get(CAP_PROP_FPS);
	qDebug() << u8"总帧率:" << capture.get(CAP_PROP_FRAME_COUNT);

	//保存视频路径
	QString savevideoPath = appPath + "/output.avi";

	cv::VideoWriter writer(savevideoPath.toStdString(), capture.get(CAP_PROP_FOURCC), capture.get(CAP_PROP_FPS), Size(capture.get(CAP_PROP_FRAME_WIDTH), capture.get(CAP_PROP_FRAME_HEIGHT)));

	cv::Mat frame;
	while (true) {
		//读帧
		bool ret = capture.read(frame);
		if (!ret)
			break;
		imshow("frame", frame);
		//添加帧处理 
		writer.write(frame);
		//等待 100 毫秒,检查用户是否按下键盘上的按键
		char c = waitKey(100);
		//按下的是 ESC 键 (ASCII 值为 27),则跳出循环,停止播放视频
		if (c == 27)
			break;
	}
	capture.release();
	writer.release();
	waitKey(0);
	destroyAllWindows();

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/3Zqhgt

相关推荐

  1. OpenCV视频

    2024-03-14 05:34:02       21 阅读
  2. 视频文件出现错误

    2024-03-14 05:34:02       10 阅读
  3. OpenCV】P2 程序显示图片

    2024-03-14 05:34:02       32 阅读
  4. OpenCV 1 - 显示 修改 保存图像

    2024-03-14 05:34:02       31 阅读
  5. QImageopencv读取的图片出错

    2024-03-14 05:34:02       17 阅读
  6. opencv出来的灰度图如何传递给pyqt的QImage?

    2024-03-14 05:34:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 05:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 05:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 05:34:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 05:34:02       20 阅读

热门阅读

  1. AI大语言模型GPT & R 生态环境领域数据统计分析

    2024-03-14 05:34:02       21 阅读
  2. 软考笔记--层次式架构之数据访问层设计

    2024-03-14 05:34:02       17 阅读
  3. 浅谈Spring Cloud Ribbon原理及其使用方法

    2024-03-14 05:34:02       20 阅读
  4. 在组件上使用v-model

    2024-03-14 05:34:02       18 阅读
  5. SCI 图像处理期刊

    2024-03-14 05:34:02       18 阅读
  6. Flink实时写Hudi报NumberFormatException异常

    2024-03-14 05:34:02       17 阅读
  7. 剑指offer面试题35 第一个只出现一次的字符

    2024-03-14 05:34:02       13 阅读
  8. css隐藏元素的方式有哪些?

    2024-03-14 05:34:02       24 阅读
  9. AI大语言模型GPT & R 生态环境领域数据统计分析

    2024-03-14 05:34:02       15 阅读
  10. python函数

    2024-03-14 05:34:02       17 阅读
  11. 分布式链路追踪(一)SkyWalking(2)使用

    2024-03-14 05:34:02       19 阅读