opencv读取MP4文件和摄像头数据

这篇具有很好参考价值的文章主要介绍了opencv读取MP4文件和摄像头数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本篇文章来讲解opencv读取MP4文件和摄像头数据,opencv主要用于处理图像数据那么本篇文章就来讲解opencv读取MP4文件和摄像头数据。

一、waitKey函数

waitKey()函数是OpenCV中常用的一个函数,它用于等待用户按键输入,并返回用户按下的键值。下面我将为您详细解释waitKey()函数的功能和使用。

waitKey()函数的基本语法如下:

int waitKey(int delay = 0);

参数说明:

delay:表示等待按键的时间(以毫秒为单位)。默认值为0,表示无限等待用户按键。如果设置一个正整数值,等待指定时间后会自动返回。
waitKey()函数的返回值是一个整数,表示用户按下的键值。通常情况下,我们会将返回值与用户可能按下的按键进行比较,以执行相应的操作。

二、VideoCapture类

VideoCapture类是OpenCV中用于从视频文件或摄像头中读取视频流的类。它提供了一系列函数和方法,使您能够读取视频流的帧并进行处理。下面我将为您详细解释VideoCapture类及其常用函数。

VideoCapture类的基本语法如下:

VideoCapture video("filename");  // 从文件中读取视频流
VideoCapture video(deviceID);    // 从摄像头设备中读取视频流

参数说明:

filename:表示要读取的视频文件的路径。
deviceID:表示要读取的摄像头设备的索引。通常,0表示默认摄像头设备。

VideoCapture类的常用函数如下:

1.isOpened():检查视频流是否成功打开。

if (video.isOpened())
{
    // 视频成功打开
}

2.read():读取视频流的下一帧。

Mat frame;
video.read(frame);  // 将下一帧视频存储在Mat对象中

3.set(CAP_PROP_X, value):设置视频流的属性。

video.set(CAP_PROP_FRAME_WIDTH, 640);   // 设置帧宽度为640
video.set(CAP_PROP_FRAME_HEIGHT, 480);  // 设置帧高度为480

4.get(CAP_PROP_X):获取视频流的属性值。

double width = video.get(CAP_PROP_FRAME_WIDTH);   // 获取帧宽度
double height = video.get(CAP_PROP_FRAME_HEIGHT);  // 获取帧高度

5.release():释放视频流资源。

video.release();

读取MP4文件:

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
    VideoCapture video("1.mp4");

    if (!video.isOpened())
    {
        printf("Failed to open video file.\n");
        return -1;
    }

    while (1)
    {
        Mat frame;
        if (!video.read(frame))
            break;

        // 处理视频帧

        imshow("Frame", frame);

        if (waitKey(30) == 27)
            break;
    }

    video.release();

	return 0;
}


读取摄像头数据:

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	VideoCapture vcaptrue;
	Mat mpic;
	vcaptrue.open(1);//打开摄像头

	if (!vcaptrue.isOpened())
	{
		return -1;
	}

	while (1)
	{
		vcaptrue >> mpic;
		imshow("读取摄像头数据",  mpic);
		waitKey(40);
	}

	return 0;
}


运行效果:
opencv 读取mp4,opencv实战,opencv,webpack,javascript,原力计划
保存读取到的图形:

使用imwrite就可以将图片保存下来了:

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	//读取mp4文件
	VideoCapture vcaptrue;
	Mat mpic;
	vcaptrue.open(0);

	int id = 0;

	if (!vcaptrue.isOpened())
	{
		return -1;
	}

	while (1)
	{
		vcaptrue >> mpic;
		imshow("读取摄像头数据",  mpic);
		
		if (waitKey(20) == 32)//按下空格保存图片
		{
			string picname = to_string(id) + ".jpg";
			id++;

			imwrite(picname, mpic);
		}
	}

	return 0;
}


按下空格后保存图片:
opencv 读取mp4,opencv实战,opencv,webpack,javascript,原力计划

总结

本篇文章就讲解到这里,下篇文章继续我们的opencv。文章来源地址https://www.toymoban.com/news/detail-627901.html

到了这里,关于opencv读取MP4文件和摄像头数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • OpenCV 视频处理(关于摄像头和视频文件的读取、显示、保存等等)

    OpenCV不仅能够处理图像,还能够处理视频 视频是由大量的图像构成的 ,这些图像是以固定的时间间隔从视频中获取的。这样,就能够使用图像处理的方法对这些图像进行处理,进而达到处理视频的目的。要想处理视频,需要先对视频进行读取、显示、保存等相关操作。为此

    2024年03月14日
    浏览(34)
  • OpenCV基础知识(9)— 视频处理(读取并显示摄像头视频、播放视频文件、保存视频文件等)

    前言: Hello大家好,我是小哥谈。 OpenCV不仅能够处理图像,还能够处理视频。视频是由大量的图像构成的,这些图像是以固定的时间间隔从视频中获取的。这样,就能够使用图像处理的方法对这些图像进行处理,进而达到处理视频的目的。要想处理视频,需要先对视频进行读

    2024年02月11日
    浏览(45)
  • 解决树莓派原装libcamera(csi)摄像头无法通过opencv读取数据的问题

    1.1 硬件 树莓派4B 树莓派原装CSI摄像头IMX219(libcamera Camera Raspberry Pi) 1.2 软件 64位树莓派arrch64,Debian 11(bullseye) Python3.9 OpenCv 此时返回的ret,frame = (False, None) 继续执行下面这条语句 报错如下 若直接执行 则报错如下 出现上述情况,应该是opencv读取不到摄像头数据所致 接下来排

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

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

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

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

    2024年02月08日
    浏览(38)
  • 【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)
  • opencv基础: 视频,摄像头读取与保存的常用方法

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

    2024年02月09日
    浏览(32)
  • VC++中使用OpenCV读取图像、读取本地视频、读取摄像头并实时显示

    最近闲着跟着油管博主murtazahassan,学习了一下LEARN OPENCV C++ in 4 HOURS | Including 3x Projects | Computer Vision,对应的Github源代码地址为:Learn-OpenCV-cpp-in-4-Hours OpenCV是一个开源的计算机视觉库,其官网地址为:https://opencv.org/,对应Github源码地址为:https://github.com/opencv/opencv,目前来说

    2024年01月17日
    浏览(45)
  • OpenCv:采集摄像头视频、读取视频帧与视频录制

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

    2024年02月16日
    浏览(34)
  • opencv入门到精通——图片,视频,摄像头的读取与保存

    OpenCV是一个流行的开源计算机视觉库,由英特尔公司发起发展。它提供了超过2500个优化算法和许多工具包,可用于灰度、彩色、深度、基于特征和运动跟踪等的图像处理和计算机视觉应用。OpenCV主要使用C++语言编写,同时也支持Python、Java、C等语言。由于其开源和广泛使用的

    2024年02月08日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包