opencv_c++学习(六)

这篇具有很好参考价值的文章主要介绍了opencv_c++学习(六)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、视频加载与摄像头调用

视频、摄像头加载

VideoCapture(filename, CAP_ANY)

对以上实例解释如下:
若读取的为本地视频,则filename为视频名称,若读取的是摄像头数据,则为int类型的摄像头id。

视频属性的获取

视频属性可以通过get()函数获取。
opencv_c++学习(六)

视频中每一帧图像的获取

见文末案例

二、视频文件的保存

VideoWriter(fliename, fourcc, fps, framSize, isColor)

对以上实例进行解释:
filename:保存视频的地址和文件名,包含视频格式;
fourcc:压缩帧的4字符编解码器代码,详细参数在表2-7给出;
fps:保存视频的帧率,即视频中每秒图像的张数;
framSize:视频帧的尺寸;
isColor:保存视频是否为彩色视频;文章来源地址https://www.toymoban.com/news/detail-437596.html

三、读取视频的样例

int main() {

	//创建一个video对象
	VideoCapture video;

	//打开1.MP4文件
	video.open("./1.mp4");

	//判断视频是否打开成功
	if (video.isOpened())
	{
		cout << "错误" << endl;
		return -1;
	}

	//显示视频帧率
	video.get(CAP_PROP_FPS);

	//显示视频宽度
	video.get(CAP_PROP_FRAME_WIDTH);

	//显示每一帧的图像
	while (1)
	{
		Mat frame;
		video >> frame;

		if (frame.empty())
		{
			break;
		}
		//控制视频的快放与慢放,同时当视频读取完毕后会退出程序
		uchar c = waitKey(1000/ video.get(CAP_PROP_FPS));

		if (c == 'a')
		{
			break;
		}
	}
}		

四、读取并保存视频的样例

int main() {

	//创建一个video对象
	VideoCapture video;

	//打开1.MP4文件
	video.open("./1.mp4");

	//判断视频是否打开成功
	if (video.isOpened())
	{
		cout << "错误" << endl;
		return -1;
	}

	//显示视频帧率
	video.get(CAP_PROP_FPS);

	//显示视频宽度
	video.get(CAP_PROP_FRAME_WIDTH);

	//显示每一帧的图像

	Mat frame;
	video >> frame;

	if (frame.empty())
		{
		return -1;
		}

	//判断图像是否为彩色图像
	bool isColor = (frame.type() == CV_8UC3);

	//创建写对象的实例
	VideoWriter writer;

	//选择编码格式
	int codec = VideoWriter::fourcc('M', 'J', 'P', 'G');

	//设置写入视频的帧率
	double fps = 25.0;

	//设置保存视频的文件名称
	string filename = "1.avi";

	//创建保存文件的视频流
	writer.open(filename, codec, fps, frame.size(), isColor);

	if (!writer.isOpened())
	{
		cout << "失败" << endl;
		return -1;
	}

	while (1)
	{
		//检测是否保存完毕
		if (!video.read(frame))
		{
			break;
		}
		//写入视频流
		writer.write(frame);

		//显示图像
		imshow("Live", frame);

		uchar c = waitKey(50);

		//按ESC退出循环
		if (c == 27)
		{
			break;
		}
	}
}

到了这里,关于opencv_c++学习(六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【opencv+图像处理】(Gui Features in OpenCV) 1-1摄像头:采集摄像头视频,读取视频帧,录制视频

    本专栏代码总库地址 https://github.com/xiawei20161308104/xv_opencv_tutorials 本节代码路径 xv_opencv_tutorials/VideoRelated/get_started_with_videos.py xv_opencv_tutorials/VideoRelated/get_and_set_video.py xv_opencv_tutorials/VideoRelated/save_video.py 参考官网 https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html 从设备,可以是摄像

    2024年02月03日
    浏览(57)
  • 4.通过Opencv采集摄像头视频数据

    VideoCapture() 虚拟采集器,一般设备号从0开始 cap.read() 读取视频帧 返回值有两个,第一个为状态值,读到帧为true 第二个值为视频帧 cap.release() 释放资源 示例程序: 运行结果: 从视频文件中读取视频帧 只处理视频,不处理音频,所以读取到的视频没有声音 播放速度设置 Vi

    2023年04月22日
    浏览(34)
  • OpenCv:采集摄像头视频、读取视频帧与视频录制

    目录 一、涉及OpenCv函数 二、什么是帧、帧的大小代表什么 三、摄像头获取视频数据 四、录制视频并保存 从设备,可以是摄像头可以是本地视频, 获取视频的函数 cv.VideoCapture()。 本函数作用在于创建一个VideoCapture或者VideoWriter对象,真正的读取和写入是通过创建的对象进行

    2024年02月16日
    浏览(34)
  • OpenCV获取网络摄像头实时视频流

    参考文章: [常用工具] OpenCV获取网络摄像头实时视频流_opencv网络摄像头 [常用工具] OpenCV获取网络摄像头实时视频流_opencv网络摄像头_落痕的寒假的博客-CSDN博客 在使用OpenCv处理视频时,无论是视频文件还是摄像头画面,都要使用VideoCapture类来进行每一帧图像的处理。当我们

    2024年02月01日
    浏览(32)
  • 使用OpenCV调用摄像头和读取视频图片

    要捕获视频,你需要创建一个 VideoCapture 对象。它的参数是设备索引的名称。设备索引就是指定哪个摄像头的数字。正常情况下,内部摄像头可以通过传入0来调用,传递1来选择外置的第二个相机,以此类推。在此之后,你可以逐帧捕获。但是在最后,不要忘记释放俘虏。 直

    2024年02月08日
    浏览(38)
  • 基于opencv的人脸检测(图片、视频、摄像头)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、检测图片中的人脸 二、检测视频与摄像头中的人脸 总结 人脸检测识别一直是个热门的研究问题,同时也是opencv中一个实现相对容易的课题。 OpenCV自带了函数detectMultiScale()可以实现对行人

    2024年02月13日
    浏览(28)
  • OpenCV 实现读取摄像头、视频读取保存 (C++)

    重点语句:VideoCapture、imshow 原理:使用VideoCapture语句读取摄像头,再利用while一次次将VideoCapture所读取的数据利用imshow语句一帧帧地读取出来 重点语句:VideoWriter 原理:在摄像头读取完图之后,利用VideoWriter语句将图像保存为固定格式 通过加入一个循环语句,按空格将图片按

    2024年02月11日
    浏览(38)
  • opencv从视频文件读取视频内容,从摄像头读取保存视频内容

    (1)argparse模块使编写用户友好的命令行接口变得容易。 (2)程序定义了它需要的参数,而argparse将找出如何从sys.argv中解析这些参数。 (3)argparse模块还会自动生成帮助和使用消息,并在用户给程序提供无效参数时发出错误信息。 import argparse # 导入库 parser = argparse.Argume

    2024年02月22日
    浏览(43)
  • opencv基础: 视频,摄像头读取与保存的常用方法

    当然还可以从视频中抓取截图,所以现在聊一下常用的抓取视频截图的的方法。 上面有三种构造方法, 第一种是无法构造方法。 第二种参数device是一个数字。 一般笔记本如此写cv2.VideoCapture(0); 因为默认是0 ,如果有多个摄像头,就需要看设置的摄像头代表的数字了。 第二种

    2024年02月09日
    浏览(32)
  • Opencv+ffmpeg摄像头视频处理(还在完成中)

    最近在搞qt监控软件的需求,经查资料发现可以通过opencv来实现图像的处理,先将opencv以及相关事件做一记录。 下图是本设计中关于C/S交互分布图,暂做记录 greenBambooMonitoring_20230202 opencv 读取视频帧cpu占用很高 Mat 图像的存储容器。 完成一个video设备录像的关键步骤 打开vid

    2023年04月23日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包