Opencv(C++)系列学习---读取视频文件和打开摄像头

这篇具有很好参考价值的文章主要介绍了Opencv(C++)系列学习---读取视频文件和打开摄像头。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天学习的这两个内容比较简单,话不多说,直接上代码!

目录

【1】读取视频文件

【2】摄像头读取视频


【1】读取视频文件

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

using namespace std;
using namespace cv;

int main(int argc,char** argv)
{
	//定义视频读取器

	//若是读取视频,则需要在cap()内提供读取的地址
	VideoCapture cap("E:\\乔大花进度\\11-21\\读取摄像头和视频\\tree.avi");

	//对视频读取是否成功进行判断
	if (!cap.isOpened())
	{
		cout << "视频读取失败,请检查地址!!!" << endl;
		return -1;
	}

	Mat frame;//frame 用来接收视频每一帧的图片
	namedWindow("test",WINDOW_AUTOSIZE);
	while (true)
	{
		//将视频中每帧的图片传入frame
		cap >> frame;
		
		//第二种方法
	//	bool ok = cap.read(frame); ok是对视频是否成功读取每帧图片进行判断,抓取的每帧图像存在frame中

	//判断载入的图片是否为空,同时也可以用frame.data 代替
		if (frame.empty())
		{
			//重新从开始读取
			cout << "视频读取完成,重新开始读取" << endl;

			//set函数可以设置cap捕捉器中参数,也可以获取捕捉视频的一些信息
			cap.set(CAP_PROP_POS_FRAMES,0);//将帧设置在0处
			continue;
		}
		
		imshow("test",frame);
		
		//定义循环速度为50ms
		int key = waitKey(50);
		if (key==27||key=='q'||key=='Q')
		{
			break;
		}
	}
	destroyAllWindows();
	return 0;

}

运行结果:

opencv打开摄像头,Opencv学习(C++),opencv,人工智能,c++

 这段代码较为简单,有兴趣的同学也可以挑战一下,在视频读取上加个进度条,可以通过鼠标拖动进度条到指定位置,像平时我们用的视频播放器一样,主要是createTrackbar算子调用回调函数实现。

参考代码如下:

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

using namespace std;
using namespace cv;

//定义全局变量
int g_slider_position = 0, frames_all = 0;
VideoCapture cap;
//定义全局函数
void onTrackerslide(int, void*);

void onTrackerslide(int, void*)
{
	//将视频移动到指定位置帧
	cap.set(CAP_PROP_POS_FRAMES, g_slider_position);
}

int main(int argc, char** argv)
{
	//定义视频读取器

	//若是读取视频,则需要在cap()内提供读取的地址
	/*VideoCapture cap("E:\\乔大花进度\\11-21\\读取摄像头和视频\\tree.avi");*/
	cap.open("E:\\乔大花进度\\11-21\\读取摄像头和视频\\1.mp4");

	//对视频读取是否成功进行判断
	if (!cap.isOpened())
	{
		cout << "视频读取失败,请检查地址!!!" << endl;
		return -1;
	}

	Mat frame;//frame 用来接收视频每一帧的图片
	namedWindow("test", WINDOW_AUTOSIZE);

	//获取图像的总帧数
	frames_all = cap.get(CAP_PROP_FRAME_COUNT);
	cout << "总的帧数为:" << frames_all << endl;
	//创建进度条
	createTrackbar("进度", "test", &g_slider_position, frames_all, onTrackerslide);

	//回调函数初始化
//	onTrackerslide(0,0);
	int i = 0;
	while (true)
	{
			//将视频中每帧的图片传入frame
			cap >> frame;

		//第二种方法
	//	bool ok = cap.read(frame); ok是对视频是否成功读取每帧图片进行判断,抓取的每帧图像存在frame中


	//判断载入的图片是否为空,同时也可以用frame.data 代替
		if (frame.empty())
		{
			//重新从开始读取
			cout << "视频读取完成,重新开始读取" << endl;

			//set函数可以设置cap捕捉器中参数,get可以获取捕捉视频的一些信息
			cap.set(CAP_PROP_POS_FRAMES, 0);//将帧设置在0处
			continue;
		}

		//设置进度条的位置,使进度条可以可以和视频一致运动
		int now_frame = cap.get(CAP_PROP_POS_FRAMES);
		setTrackbarPos("进度", "test", now_frame);

		//定义循环速度为50ms
		int key = waitKey(20);

		imshow("test", frame);

		if (key == 27 || key == 'q' || key == 'Q')
		{
			break;

		}

	}
	cv::destroyAllWindows();
	return 0;

}

运行结果为:

opencv打开摄像头,Opencv学习(C++),opencv,人工智能,c++

【2】摄像头读取视频

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

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	//argc为设备上摄像头的数量,如果只有一个1,则初始ID为0,默认为-1
	cout << argc << endl;
	//打开初始摄像头
	VideoCapture cap(0);
	
	namedWindow("test",WINDOW_AUTOSIZE);
	Mat frame;
	while (true)
	{
		cap >> frame;
		if (!frame.data)
		{
			cout << "检查摄像头" << endl;
			break;
		}

		imshow("test", frame);
		int key = waitKey(20);
		if (key==27||key=='Q'||key=='q')
		{
			break;
		}

	}
	
	system("pause");
	return 0;
}

运行结果:

opencv打开摄像头,Opencv学习(C++),opencv,人工智能,c++文章来源地址https://www.toymoban.com/news/detail-566842.html

到了这里,关于Opencv(C++)系列学习---读取视频文件和打开摄像头的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • OpenCV 实现读取摄像头、视频读取保存 (C++)

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

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

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

    2024年02月16日
    浏览(44)
  • 【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日
    浏览(64)
  • 使用OpenCV调用摄像头和读取视频图片

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

    2024年02月08日
    浏览(48)
  • opencv基本操作二(读取视频流与保存视频、读取摄像头并保存视频)

    opencv常用 读视频函数 cv2.VideoCapture 、 cv2.VideoCapture.get 等,可以参考这里 opencv常用 写视频函数 cv2.VideoWriter 等可以参考这里 ,其中视频格式可以参考这里 videoCapture.read() 是按帧读取视频, ret,frame 是获 .read() 方法的两个返回值。其中 ret 是布尔值,如果读取帧是正确的则返回

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

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

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

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

    2024年02月08日
    浏览(49)
  • cv2.VideoCapture使用,opencv读取摄像头,视频图像

            cv2.VideoCapture()用于读取视频,也可以用于读取摄像头图像。         上面的2种写法,第一种表示读取摄像头,第二种读取视频文件,返回值就是视频数据。         在读取到视频后,可以使用isOpened方法来判断视频是否能够打开,能打开返回True,不能够打

    2024年02月12日
    浏览(74)
  • OpenCV中读取、显示、保存摄像头视频讲解与实战(附Python源码)

    需要源码请点赞关注收藏后评论区留言私信~~~ OpenCV不仅能够处理图像,还能够处理视频。视频是由大量的图像构成的,这些图像以固定的时间间隔从视频中获取。这样,就能够使用图像处理的方法对这些图像进行处理,进而达到处理视频的目的。要处理视频,需要先对视频进

    2024年02月05日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包