文章末尾博主为大家整理了人工智能学习资料有想提升自身能力和转行的朋友可以免费领取。
历史优秀文章推荐:
TensorFlowSharp入门使用C#编写TensorFlow人工智能应用学习
神经网络的自我修养——神经网络结构搜索NAS简述
OpenCV是一个开源的计算机视觉和机器学习软件库。OpenCV主要为开发计算机视觉程序提供一组公共的底层结构和加强商业产品中机器的感知能力。OpenCV使用BSD许可证,它可以被商用并可以修改源代码。
OpenCV库有超过2500个已优化的算法,既包含了经典的也包含了最先进的计算机视觉和机器学习算法。这些算法可以被用来检测和识别人脸,跟踪移动的物体,提取物体的三维模型,从立体相机中产生3D point clouds,可以将图片拼接来生成一张高解析度的全景图像,从图像数据库中找到相似性的图像等。OpenCV已经有超过4万7千的用户群体,并且估计下载数量超过1400万。
对于从事计算机视觉研究和开发的相关人员,熟练掌握OpenCV基本操作几乎是每一个cver必须掌握的一个技能。本文是OpenCV学习记录系列的第一篇,主要讲解OpenCV入门-图像和视频的读取和保存等基本操作,为大家提供可直接运行的代码,通过实践来加深记忆,主要提供Python和C++代码。
一、图像的读取和显示
Python实现
读取并显示图像:
保存图像:
2. C++实现
二、视频的读取和保存
C++实现
读取和显示视频
在opencv中读取显示视频的头文件是highgui.hpp。视频图像处理头文件imgproc.hpp。
整体代码如下,如要测试自己的视频,需要将代码段中的视频地址更改为自己视频的绝对路径。
代码解析:
VideoCapture类:视频捕捉类,该语句实例化了一个对象cap。这个类可以打开和关闭视频文件。这个对象可以打开和关闭ffmpeg支持的所有类型的视频文件。
cap.open函数:根据给定的路径,打开视频文件。一旦打开,当前实例cap将包含对应视频文件的所有信息。
Mat frame操作:该操作用来实例化一个数据对象,该数据对象用来存放视频帧。
cap>>frame操作:一旦进入while()循环,就会从捕获对象流逐帧读取视频文件。
一旦我们显示了帧,然后等待33毫秒。如果用户在此期间按下一个键,我们将退出循环。否则,33毫秒将通过,我们将再次执行循环。在退出时,所有分配的数据都会在超出范围时自动释放。
加速视频
在许多应用的需求中,希望将输入,或捕获图像记录到输出视频流中,并保存成一个完整的视频,OpenCV提供了一种简单的方法。利用opencv调用电脑摄像头中,可以从视频流中捕获到一个一个的帧,并将这些帧逐一显示。我们也可以创建一个写入功能,使得这一个个的帧能够逐一被放入到视频中。在opencv中cv::VideoWriter类就可以实现这个功能。
下面程序段的功能为:调整输入视频的播放速度,并将新速度的视频保存为.avi文件。
主要操纵的就是一个参数:帧率(fps)。
上述代码中主要的操作就是对cv::VideoWriter这个类实例化出来的writer对象的操作。
writer.open(out_path, CV_FOURCC(‘M’, ‘J’, ‘P’, ‘G’), fps, size);
该函数有以下几个参数:
out_path:该参数是写入视频后,保存avi文件的路径+文件名
CV_FOURCC(‘M’, ‘J’, ‘P’, ‘G’):确定输出视频的编码规则。
fps:该参数表示输出视频的帧率,本例子中就是将帧率改成了原始视频的两倍,实现倍速播放。
size:该参数指定了输出视频每帧图像的大小,本例子中该值来自于原始视频帧的大小。
isColor:如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持)。
Python实现
Python利用OpenCV实现视频的读取及保存。
总结
我整理了一份关于pytorch、python基础,图像处理opencv\自然语言处理、机器学习、数学基础等资源库,想学习人工智能或者转行到高薪资行业的,大学生都非常实用,无任何套路免费提供,,可以领取的内部资源,人工智能题库,大厂面试题 学习大纲 自学课程大纲还有200G人工智能资料大礼包免费送哦~扫码加V免费领取资料.