OpenCV入门级图像处理教程,从小白到视觉算法工程师
Posted 人工智能小雨老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV入门级图像处理教程,从小白到视觉算法工程师相关的知识,希望对你有一定的参考价值。
OpenCV是一个开源的计算机视觉和机器学习软件库。OpenCV主要为开发计算机视觉程序提供一组公共的底层结构和加强商业产品中机器的感知能力。OpenCV使用BSD许可证,它可以被商用并可以修改源代码。
OpenCV库有超过2500个已优化的算法,既包含了经典的也包含了最先进的计算机视觉和机器学习算法。这些算法可以被用来检测和识别人脸,跟踪移动的物体,提取物体的三维模型,从立体相机中产生3D point clouds,可以将图片拼接来生成一张高解析度的全景图像,从图像数据库中找到相似性的图像等。OpenCV已经有超过4万7千的用户群体,并且估计下载数量超过1400万。
对于从事计算机视觉研究和开发的相关人员,熟练掌握OpenCV基本操作几乎是每一个cver必须掌握的一个技能。本文是OpenCV学习记录系列的第一篇,主要讲解OpenCV入门-图像和视频的读取和保存等基本操作,为大家提供可直接运行的代码,通过实践来加深记忆,主要提供Python和C++代码。
开讲之前老师给大家准备了一份深度学习+CV计算机视觉学习资料,内含:两大Pytorch、TensorFlow实战框架源码资料;OpenCV、YOLO物体检测实战项目、计算机视觉等视频和资料以及深度学习书籍,
记得加微领取哦!
一、图像的读取和显示
- 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实现视频的读取及保存。
以上是关于OpenCV入门级图像处理教程,从小白到视觉算法工程师的主要内容,如果未能解决你的问题,请参考以下文章
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备(建议收藏)