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入门级图像处理教程,从小白到视觉算法工程师相关推荐
- OpenCV与图像处理学习九——连通区域分析算法(含代码)
OpenCV与图像处理学习九--连通区域分析算法(含代码) 一.连通区域概要 二.Two-Pass算法 三.代码实现 一.连通区域概要 连通区域(Connected Component)一般是指图像中 ...
- 16~40K | 星猿哲科技招聘3D视觉算法工程师
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 公司官网:http://www.xyzrobotics.ai/ XYZ Robotics(星猿哲科技) ...
- 招聘|青岛旭升招聘高级软件工程师、3D视觉算法工程师
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 公司介绍: 青岛旭升视觉有限公司是一家专注于机器人3D视觉引导与工业3D测量领域的高新技术企业,独立发 ...
- 20-40K| 梅卡曼德视觉算法工程师、机器人软件、相机产品经理招聘
3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁.如果你需要我们帮助你发布实习或全职岗位,请添加微信号「dddvision」. 公司介绍 梅卡曼德机器人由 ...
- 【通知】有三AI更新420页14万字视觉算法工程师成长指导手册,可下载收藏打印...
各位同学,可还记得我们发布的<深度学习视觉算法工程师成长指导手册>,现在更新了,超过14万字,420页文档,可下载收藏打印,目录如下,文末提供了下载方式. 手册简介 目前深度学习在图像,语 ...
- 岗位推荐 | 百度视觉技术部招聘移动端视觉算法工程师
PaperWeekly 致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁. 如果你需要我们来帮助你推广实习机会或全职岗位,请添加微信号「pwbot02」. 百度视觉技 ...
- 图像处理知多少?准大厂算法工程师30+场秋招后总结的面经问题详解
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨灯会 来源丨极市平台 编辑丨极市平台 极市导读 本篇主要包含了图像滤波.边缘检测相关常考内容等相 ...
- 年薪20-50万 | 艾视维科技“3D视觉算法工程师”岗位招人啦!
岗位需求 01 3D视觉算法高级工程师 多名 年薪40-50万/年 广州 岗位职责: 1.结合具体的3D视觉应用需求,可独立进行前期技术评估并制定对应的技术方案: 2.基于公司现有的机器视觉软件 ...
- GIA张怡:关于小白入门AI算法工程师的直播分享
一.我是小白,怎么开始修炼之路? 1.如何开始学习AI知识 有目标的学习,从项目,从试验场景中找解决问题的方法,以实现某个问题为导向去学习. 2.如何入门 Just Do it! 找到自己的目标 我想 ...
最新文章
- python网盘提取码怎么用_Python 一键获取百度网盘提取码
- mysql 特殊字符
- sprintboot-learn(一)
- js笔记(10)之无缝滚动
- matlab画线不同颜色_怎样画线框图才有意义?
- java实体类属性非空判断工具类
- 简洁大气自适应后台登录模板单页源码
- MOOS学习笔记1——HelloWorld
- 如何解析一个字符串并返回一个嵌套数组?
- php怎么实现弹幕,HTML如何利用canvas实现弹幕功能
- Oracle 12C R2-新特性-SQLPLUS提供查看历史命令的功能
- 蓝桥杯2015年第六届C/C++省赛A组第九题-垒骰子
- (结构型模式)FlyWeight——享元模式
- exlsx表格教程_excel表格格式刷的使用教程详解
- 2021FME博客大赛 —— FME在无名河流水系实体化中的应用实践
- 在MATLAB中实现均值变点法
- 国产BI报表工具中低调的优秀“模范生”——思迈特软件Smartbi
- processing交互应用——双人对战游戏
- 半年销售100万辆 关注比亚迪后300万时代
- python的turtle的等边等角三角形的经典简洁画法