opencv官方资料教程地址: https://opencv.org/
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
1999 年,Gary Bradski(加里·布拉德斯基)当时在英特尔任职,怀着通过为计算机视觉和人工智能的从业者提供稳定的基础架构并以此来推动产业发展的美好愿景,他启动了 OpenCV 项目。
OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。
OpenCV 自项目成立以来获得了来自英特尔和谷歌的大力支持,尤其需要感谢 Itseez,该公司完成了早期开发的大部分工作。此后,Arraiy 团队加入该项目并负责维护始终开源和免费的 OpenCV.org。
Itseez 是俄罗斯的一家视觉公司,专门从事计算机视觉算法。2016 年 5 月,英特尔收购该公司,以“帮助英特尔的用户打造创新型深度学习的 CV 应用,如果自动驾驶、数字安全监控和工业检测”(英特尔物联网总经理 Doug Dacies 如此说)
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。
IPPICV 加速
如果希望得到更多在英特尔架构上的自动优化,可以购买英特尔的集成性能基元(IPP)库,该库包含了许多算法领域的底层优化程序。在库安装完毕的情况下 OpenCV 在运行的时候会自动调用合适的 IPP 库。
从 OpenCV 3.0 开始,英特尔许可 OpenCV 研发团队和 OpenCV 社区拥有一个免费的 IPP 库的子库(称 IPPICV),该子库默认集成在 OpenCV 中并在运算时发挥效用。
如果你使用的是英特尔的处理器,那么 OpenCV 会自动调用 IPPICV。
IPPICV 可以在编译阶段链接到 OpenCV,这样一来,会替代相应的低级优化的C语言代码(在 cmake 中设置
WITH_IPP=ON/OFF
来开启或者关闭这一功能,默认情况为开启)。使用 IPP 获得的速度提升非常可观。
https://paperswithcode.com/sota 这个网站非常详细划分了 16 个大方向,包括总共 1081 个子方向。如果想进入机器学习领域,首先还是选择一个方向领域,然后了解和熟悉该方向领域内所需要的算法,特定的解决技巧等。
计算机视觉可以分为以下几大方向:图像识别、目标检测、图像分割、风格迁移、图像重构、超分辨率、图像生成、人脸识别、其他。
(Image Classification):也称图像识别,就是辨别图像是什么,或者说图像中的物体属于什么类别。
图像分类根据不同分类标准可以划分为很多种子方向;比如根据类别标签,可以划分为
二分类问题:比如判断图片中是否包含人脸;
多分类问题:比如鸟类识别;
多标签分类,每个类别都包含多种属性的标签:比如对于服饰分类,可以加上衣服颜色、纹理、袖长等标签,输出的不只是单一的类别,还可以包括多个属性。
(Object Detection):目标检测通常包含两方面的工作,首先是找到目标,然后就是识别目标。
目标检测可以分为单物体检测和多物体检测,即图像中目标的数量,例子如下所示:
(Object Segmentation):图像分割是基于图像检测的,需要检测到目标物体,然后把物体分割出来。
图像分割可以分为三种:
一个图形分割的例子如下所示,下图就是一个实例分割的例子,用不同的颜色表示不同的实例
(Style Transfer):风格迁移是指将一个领域或者几张图片的风格应用到其他领域或者图片上。比如将抽象派的风格应用到写实派的图片上。
一个风格迁移的例子如下, 图 A 是原图,后面的 B-D 三幅图都是根据不同风格得到的结果
(Image Reconstruction):也称为图像修复(Image Inpainting),其目的就是修复图像中缺失的地方,比如可以用于修复一些老的有损坏的黑白照片和影片。通常会采用常用的数据集,然后人为制造图片中需要修复的地方。
一个修复的例子如下所示,总共是四张需要修复的图片
(Super-Resolution):超分辨率是指生成一个比原图分辨率更高、细节更清晰的任务。一个例子如下图所示
通常超分辨率的模型也可以用于解决图像恢复(image restoration)和修复(inpainting),因为它们都是解决比较关联的问题。
(Image Synthesis):图像生成是根据一张图片生成修改部分区域的图片或者是全新的图片的任务。这个应用最近几年快速发展,主要原因也是由于 GANs 是最近几年非常热门的研究方向,而图像生成就是 GANs 的一大应用。
一个图像生成例子如下:
人脸方面的应用,包括人脸识别、人脸检测、人脸匹配、人脸对齐等等,这应该是计算机视觉方面最热门也是发展最成熟的应用,而且已经比较广泛的应用在各种安全、身份认证等,比如人脸支付、人脸解锁。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1MZGE96D-1638193524522)(opencv图像处理(c++)/1604244708687.png)]
opencv实际上还有其他很多方向应用,包括: