opencv简介
计算机视觉指的是通过分析输入图像或图像序列,生成对被成像物体或场景的描述,用于完成具体的任务,如边缘提取、图像恢复、三维重建、特征匹配、运动估计、目标检测等。OpenCV(Open Source Computer Vision)是计算机视觉领域最重要的开源函数库,其中不仅包括了众多图像处理和视频分析算法,还包含了经典机器学习算法和深度学习算法库。这些机器学习算法在计算机视觉的图像分类、目标检测、目标跟踪和光学字符检测识别等任务中扮演了关键角色。此外,深度机器学习算法库是OpenCV的重要组成部分,因此,OpenCV的机器学习与深度学习模块在机器学习理论与编程实战之间架设了一座桥梁。
1.计算机视觉、图像处理与OpenCV
计算机视觉正在从新兴阶段发展,其结果在各种应用中非常有用。例如:在我们的手机摄像头中识别人脸;自动驾驶汽车,识别交通信号、标志和行人;在工业应用中监控问题;增强现实等。计算机视觉的主要目的是让计算机像人类一样看清世界,甚至更好。计算机视觉所需的基础支撑包含数字信号处理、神经科学、图像处理、模式识别、机器学习 (ML) 、机器人技术和人工智能 (AI)等,其通常使用 C++、Python 和 MATLAB 等编程语言。
计算机视觉与以下领域有很大重叠:
Image Processing - 专注于图像处理,其输入和输出都是图像。
Pattern Recognition - 解释了对模式进行分类的各种技术。
Photogrammetry - 涉及从图像中获取准确的测量值。
图像处理是将图像转换为数字形式并执行某些操作以从中获取一些有用信息的过程。图像处理系统在应用某些预定的信号处理方法时,通常将所有图像都视为二维信号。
图像由基于像素数的尺寸(高度和宽度)表示。例如,如果图像的尺寸为 500 x 400(宽 x 高),则图像中的像素总数为 200000。该像素是图像上具有特定阴影、不透明度或颜色的点。它通常以下列之一表示:
灰度 - 像素是一个整数,其值介于 0 到 255 之间(0 是全黑,255 是全白)。
RGB - 一个像素由 0 到 255 之间的 3 个整数组成(整数代表红色、绿色和蓝色的强度)。
RGBA - 它是 RGB 的扩展,添加了 alpha 字段,表示图像的不透明度。
图像处理主要有五种类型:可视化(查找图像中不可见的对象)、识别(区分或检测图像中的物体)、锐化和恢复(从原始图像创建增强图像)、模式识别(测量图像中物体周围的各种模式)和检索(从与原始图像相似的大型数字图像数据库中浏览和搜索图像)。
OpenCV(Open Source Computer Vision Library)是一个开源的机器视觉和机器学习软件库,其使用C和C++编写,可以在Linux、Windows、mac OS、Android和iOS操作系统上运行。1999年,英特尔公司发起了OpenCV项目,希望通过为在该领域工作的人提供一套函数库来加快计算机视觉与人工智能的发展。它主要侧重于图像处理、视频捕获和分析,包括人脸检测和物体检测等功能。使用 OpenCV 库可以读取和写入图像、捕获和保存视频、处理图像(过滤、转换)、执行特征检测、检测视频或图像中的特定对象、分析视频,即估计其中的运动、减去背景并跟踪其中的对象。
OpenCV的目标之一是提供一个简单易用的计算机视觉基础库,帮助人们快速构建复杂的计算机视觉应用程序。由于计算机视觉和机器学习结合得非常紧密,在许多机器视觉算法中都使用了机器学习算法以便完成不同的任务。例如,机器学习算法被广泛用于目标检测识别、图像分类和视觉搜索跟踪等应用中。因此,OpenCV创建了一个专门的机器学习模块(机器学习算法库),该机器学习模块包含贝叶斯分类器、K近邻(KNN)、支持向量机(SVM)、决策树、神经网络和深度学习模块等。
以下是 OpenCV 库的主要库模块:
核心功能
- 本模块涵盖用于构建 OpenCV 应用程序的基本数据结构,例如标量、点、范围等。除了这些,它还包括多维数组Mat,用于存储图像。在 OpenCV 的 Java 库中,这个模块包含在一个名为 org.opencv.core 的包中。
图像处理
- 该模块涵盖了各种图像处理操作,例如图像过滤、几何图像变换、颜色空间转换、直方图等。在 OpenCV 的 Java 库中,该模块包含在名为 org.opencv.imgproc 的包中。
视频
- 本模块涵盖视频分析概念,例如运动估计、背景减除和对象跟踪。在 OpenCV 的 Java 库中,这个模块包含在一个名为 org.opencv.video 的包中。
视频输入输出
- 本模块介绍了使用 OpenCV 库的视频捕获和视频编解码器。在 OpenCV 的 Java 库中,这个模块包含在一个名为 org.opencv.videoio 的包中。
calib3d
- 该模块包括有关基本多视图几何算法、单相机和立体相机校准、物体姿态估计、立体对应和 3D 重建元素的算法。在 OpenCV 的 Java 库中,该模块包含在一个名为 org.opencv.calib3d 的包中。
features2d
- 该模块包括特征检测和描述的概念。在 OpenCV 的 Java 库中,这个模块包含在一个名为 org.opencv.features2d 的包中。
对象检测
- 该模块包括检测对象和预定义类的实例,例如面部、眼睛、杯子、人、汽车等。在 OpenCV 的 Java 库中,该模块包含在名为 org.opencv.objdetect 的包中。
图形界面
- 这是一个易于使用的界面,具有简单的 UI 功能。在 OpenCV 的 Java 库中,该模块的功能包含在两个不同的包中,即 org.opencv.imgcodecs 和 org.opencv.videoio。
深度神经网络(DNN)模块
在OpenCV 3.4之后移入主模块,目前该模块仅被设计用于计算网络前向传播(即推理),不支持网络训练。该模块主要包括:
- 创建网络层的API;
- 常用的网络层;
- 构建和修改网络的API;
- 加载不同框架的序列化网络模型。
2.OpenCV 发展历史
OpenCV 最初是英特尔的一项研究计划,旨在为 CPU 密集型应用程序提供应用接口,于1999年正式推出。
2006 年,发布第一个主要版本 OpenCV 1.0。
2009 年 10 月,发布第二个主要版本 OpenCV 2.0。
2012 年 8 月,被非营利组织 OpenCV.org 收购。
2013 年 3 月,发布Image Watch插件,供 Visual Studio 调试时的图像内存可视化。
2014 年 8 月,发布第三个主要版本 OpenCV 3.0。
该版本主要更新:
- 在 http://github.com/itseez/opencv_contrib 中放置了许多令人兴奋的功能,包括众所周知的人脸识别和文本检测,还有文本识别、新时代边缘检测器、最先进的修复、深度图处理、新的光流和跟踪算法等。
- Lluis Gomez 和 Stefano Fabri 的文本检测和识别
- Fedor Morozov 和 Alexander Shishkov 的 HDR
- Eugene Khvedchenya 的 KAZE/A-KAZE,算法作者 Pablo Alcantarilla 和 F. Morozov 的一些改进。
- Vitaly Lyudvichenko、Yuri Gitman、Alexander Shishkov 和 Alexander Mordvintsev 的智能分割和边缘感知过滤器
- Vlad Shakhuro 和 Nikita Manovich 使用 Waldboost、ACF 进行汽车检测
- TLD 跟踪器和 Alex Leontiev 的几种常用优化算法
- Hilton Bristow 的 Matlab 绑定,由 Mathworks 提供支持。
- 极大地扩展了 Python 绑定,包括 Python 3 支持,以及 Alexander Mordvintsev、9.Abid Rahman 和其他人的几个 OpenCV+Python 教程。
- Ozan Tonkal 和 Anatoly Baksheev 使用 VTK 进行 3D 可视化。
- Vincent Rabaud 的 RGBD 模块
- Daniel Angelov 的线段检测器
- Siddharth Kherada 的许多有用的计算摄影算法
- 形状描述符、匹配和变形形状(形状模块),作者:Juan Manuel Perez Rua 和 Ilya Lysenkov
- Antonella Cascitelli 和 Francesco Puja 的长期跟踪 + 基于显着性的改进(跟踪模块)
- 另一个好的姿势估计算法和 Edgar Riba 和 Alexander Shishkov 的姿势估计教程
- Biagio Montesano 和 Manuele Tamburanno 的线描述符和匹配器
- Steven Puttemans 对库的各个部分进行了大量改进;非常感谢你,史蒂文!
- Adrian Stratulat、Cody Rigney、Alexander Petrikov、Yury Gorbachev 等人对 NEON 进行了多项优化。
- 在 cv::Mat 上快速 foreach 循环,作者:Kazuki Matsuda
- Georgios Evangelidis 的图像对齐(ECC 算法)
- Marvin Smith 的 GDAL 图像支持
- Vincent Rabaud 的 RGBD 模块
- Ilya Krylov 的鱼眼相机模型
- Eugene Khvedchenya 的 OSX 框架构建脚本
- Pierre-Emmanuel Viel 对 FLANN 的多项改进
- Gregory Morse 改进了 WinRT 支持
- Evgeniy Kozhinov 和 NNSU 团队的 Latent SVM Cascade(等待集成)
- Rahul Kavi 的逻辑回归
- Bo Li的五点位姿估计算法
2015 年 12 月,发布 OpenCV 3.1。
该版本主要改进:
- Google Summer of Code 2015 期间引入了许多新功能:
“全向相机校准和立体 3D 重建”——opencv_contrib/ccalib 模块(Baisheng Lai,Bo Li)
“运动结构”——opencv_contrib/sfm 模块(Edgar Riba,Vincent Rabaud)
“改进的基于可变形部件的模型”——opencv_contrib/dpm 模块(Jiaolong Xu,Bence Magyar)
“使用核化相关滤波器进行实时多目标跟踪”——opencv_contrib/tracking 模块(Laksono Kurnianggoro、Fernando J. Iglesias Garcia)
“改进和扩展的场景文本检测”——opencv_contrib/text 模块(Lluis Gomez,Vadim Pisarevsky)
“立体对应改进”——opencv_contrib/stereo 模块(Mircea Paul Muresan,Sergei Nosov)
“结构光系统校准”——opencv_contrib/structured_light(Roberta Ravanelli、Delia Passalacqua、Stefano Fabri、Claudia Rapuano)
“用于相机校准的棋盘+ArUco”——opencv_contrib/aruco(Sergio Garrido、Prasanna、Gary Bradski)
“深度神经网络框架通用接口的实现”——opencv_contrib/dnn 模块(Vitaliy Lyudvichenko、Anatoly Baksheev)
“边缘感知过滤的最新进展,改进的 SGBM 立体算法”——opencv/calib3d 和 opencv_contrib/ximgproc(Alexander Bokov,Maksim Shabunin)
“改进的 ICF 检测器,waldboost 实现”——opencv_contrib/xobjdetect(Vlad Shakhuro,Alexander Bovyrin)
“多目标 TLD 跟踪”——opencv_contrib/tracking 模块(Vladimir Tyan,Antonella Cascitelli)
“使用 CNN 进行 3D 姿态估计”——opencv_contrib/cnn_3dobj(Yida Wang、Manuele Tamburrano、Stefano Fabri)
- 社区做出的许多伟大贡献,例如:
支持HDF5格式
新的/改进的光流算法
多种新的图像处理算法,用于过滤、分割和特征检测
超像素分割
IPPICV 现在基于 IPP 9.0.1,这将使 OpenCV 在现代英特尔芯片上更快
opencv_contrib 模块现在可以包含在 iOS 的 opencv2.framework 中
支持最新的操作系统:Windows 10 和 OSX 10.11(Visual Studio 2015 和 XCode 7.1.1)
T-API 与 OpenCL、OpenGL、DirectX 和 Linux 上的视频加速 API 以及 Android 5 相机之间的互操作性。
HAL(Hardware Acceleration Layer)模块功能已移入相应的基础模块; HAL替换机制已与示例一起实施
2016 年 12 月,发布 OpenCV 3.2。
该版本主要改进:
- Ambroise Moreau (Delia Passalacqua) – 结构光和相位展开模块的正弦模式
- Alexander Bokov (Maksim Shabunin) – DIS 光流(出色的密集光流算法,比 Farneback 的算法——我们的基线)更好、更快,以及基于学习的颜色恒常性算法实现
- Tyan Vladimir (Antonella Cascitelli) – 基于 CNN 的跟踪算法 (GOTURN)
- Vladislav Samsonov (Ethan Rublee) – PCAFlow 和 Global Patch Collider 算法实现
- João Cartucho (Vincent Rabaud) – Python、C++ 和 Java 的多语言 OpenCV 教程
- Jiri Horner (Bo Li) – 新相机模型和拼接管道的并行处理
- Vitaliy Lyudvichenko (Anatoly Baksheev) – dnn 模块的优化和改进
- Iric Wu (Vadim Pisarevsky) – 对文件存储的 Base64 和 JSON 支持。在编写文件存储时使用“myfilestorage.xml?base64”之类的名称以 base64 编码形式存储大量数字数据。
- Edgar Riba (Manuele Tamburrano, Stefano Fabri) – tiny_dnn 改进和集成
- Yida Wang (Manuele Tamburrano, Stefano Fabri) – 使用 tiny_dnn 进行量化和语义显着性检测
- Anguelos Nicolaou (Lluis Gomez) – 基于 CNN 的词识别算法
opencv_contrib中大大改进和加速的dnn模块:
- 许多新层,包括反卷积、LSTM 等。
- 支持带有样本的语义分割和 SSD 网络。
- TensorFlow 导入程序 + 运行 Google 的 Inception net 的示例。
- 支持更多图像格式和相机后端
- 交互式相机校准应用程序
- opencv_contrib 中实现的多种算法
- 支持最新的操作系统,包括 Ubuntu 16.04 LTS 和 OSX 10.12
- 使用并行性、矢量指令和新的 OpenCL 内核对 IA 和 ARM 架构进行了大量优化。
- OpenCV 现在可以使用供应商提供的 OpenVX 和 LAPACK/BLAS(包括 Intel MKL、Apple 的 Accelerate、OpenBLAS 和 Atlas)进行加速
2017 年 8 月,发布 OpenCV 3.3。
该版本主要改进:
- 将 DNN 模块从 opencv_contrib 提升到主存储库,对其进行了改进和加速。不再需要外部 BLAS 实现。对于 GPU,有使用 Halide (http://halide-lang.org) 的实验性 DNN 加速。有关该模块的详细信息可以在我们的 wiki 中找到:OpenCV 中的深度学习。
- 现在可以使用标志 ENABLE_CXX11 将 OpenCV 构建为 C++ 11 库。为 C++ 11 程序员添加了一些很酷的功能。
- 由于称为“动态调度”的功能,我们还在 OpenCV 的默认构建中启用了相当多的 AVX/AVX2 和 SSE4.x 优化。 DNN 模块也有一些 AVX/AVX2 优化。
- videoio 模块现在可以使用 Intel Media SDK 进行硬件加速视频编码/解码。支持 MPEG1/2 和 H.264。
- 嵌入到 OpenCV 中的英特尔 IPP 子集已从 2015.12 升级到 2017.2 版本,导致我们的核心和 imgproc 性能测试的速度提高了约 15%。
- 自 OpenCV 3.2 以来,我们的错误跟踪器中的 716 个合并请求已被合并,588 个问题已关闭。此外,我们通过一些严格的静态分析工具运行 OpenCV 并修复了检测到的问题。因此,OpenCV 3.3 有望成为非常稳定和可靠的版本。
有关 OpenCV 3.3 中的更改和新功能的更多详细信息,请访问 https://github.com/opencv/opencv/wiki/ChangeLog。
2018 年 11 月,发布 OpenCV 4.0。
该版本主要改进:
- ONNX 解析器已添加到 OpenCV DNN 模块。它支持各种分类网络,如AlexNet、Inception v2、Resnet、VGG等。也部分支持tiny YOLO v2目标检测网络。
- Mask RCNN 支持和示例
- 使用英特尔推理引擎(英特尔 OpenVINO 的一部分)时更快的对象检测
- OpenCL 后端的多项稳定性改进。
- 快速 QR 码检测器(在 Core i5 桌面上分辨率为 ~80FPS @ 640×480)。到 4.0 gold 我们还计划添加二维码解码器,这样我们就有了一个完整的解决方案。
- 通过所谓的“广泛通用内在函数”不断扩展 SSE4、AVX2 和 NEON 优化内核集。
- OpenCV 现在是 C++11 库,它需要 C++11 兼容的编译器。因此,一些不错的功能,如带有 lambda 函数的 parallel_for、在
- cv::Mat 上的便捷迭代、通过列出其元素来初始化 cv::Mat 等,默认情况下可用。
- CPU 和 GPU 加速的 KinFu 实时 3d 密集重建算法已包含在 opencv_contrib 中。
- HPX 并行后端(感谢 Jakub Golinowski)
- 新的棋盘检测器(感谢 Alexander Duda)
- 感谢 Zhiwen Wu 和 Juan J. Zhao,实验性 Vulkan 后端已添加到 dnn 模块。
- 感谢 Jiri Horner,opencv_stitching 模块接口已经重构。
- 感谢 Wenfeng CAI,实现了更准确的相机校准方法。
- 核心模块的持久化部分(以 XML/YML/JSON 格式存储数据)已用 C++ 重写,读取时消耗的内存更少 FileStorage,C API (CvFileStorage) 已被删除。
- Graph API 模块已得到扩展:它获得了初始异构支持、OpenCL 支持、更好的文档以及独立构建它的能力。感谢 Dmitry Matveev、Dmitry Budnikov 和其他 G-API 人员!
- 在以下模块中删除了更多过时的 C-API:照片、视频、imgcodecs、videoio
- 删除了过时的 videoio 和 highgui 后端:QuickTime、QTKit、Unicap、Video for Windows、libv4l、DC1394_V1、Carbon
shape、superres、videostab、viz 模块和 TVL1 光流算法已移至 opencv_contrib- 由 Alexander Bokov 实现的 DIS 光流算法已从 opencv_contrib 移至主存储库。
- 3.4 分支中的一些最新更改已合并到主分支中,包括更新的 libpng(安全修复)、XCode 10 支持、图灵 GPU 支持、许多优化和错误修复
- OpenCV 现在是 C++11 库,需要兼容 C++11 的编译器。最低要求的 CMake 版本已提高到 3.5.1。
OpenCV 1.x 中的许多 C API 已被删除。- 核心模块中的持久性(将结构化数据存储到 XML、YAML 或 JSON 或从中加载结构化数据)已在 C++ 中完全重新实现,并且也丢失了 C API。
- 添加了新模块 G-API,它充当非常高效的基于图形的图像处理管道的引擎。
- dnn 模块已使用 OpenVINO™ 工具包 R4 中的深度学习部署工具包进行了更新。请参阅有关如何构建和使用支持 DLDT 的 OpenCV 的指南。
- dnn 模块现在包括实验性 Vulkan 后端并支持 ONNX 格式的网络。
- 流行的 Kinect Fusion 算法已针对 CPU 和 GPU (OpenCL) 实施和优化
- QR 码检测器和解码器已添加到 objdetect 模块
- 非常高效且高质量的 DIS 密集光流算法已从 opencv_contrib 移至视频模块。
更多详细信息在变更日志
2019 年 4 月,发布 OpenCV 4.1。
该版本主要改进:
- 为核心模块和 imgproc 模块中的大量函数启用运行时调度优化。
- 推理引擎后端已切换到 NN Builder API,支持 Intel® Neural Compute Stick 2
- 减少峰值内存消耗并支持来自 TensorFlow 的多个新网络
- Android Media NDK API 支持已添加到 videoio 模块
- 添加了几个 Perceptually Uniform Sequential 颜色图
- opencv_contrib 添加了新的图像质量分析模块(质量),实现了无参考 BRISQUE 算法以及 PSNR、SSIM 等
- 稳健的本地光流算法已添加到 opencv_contrib/optflow 模块
- 准密集立体匹配算法已在 opencv_contrib/stereo 模块中实现
- 添加了手眼校准方法
2019 年 7 月,发布 OpenCV 4.1.1。
该版本主要改进:
- 初步支持 3D 卷积网络
- 使用 InferenceEngine 后端进行异步推理
- 网络可视化
- 广泛通用内在函数的 AVX-512 实现和更多优化
- 用于 solvePNP 的新 IPPE 算法
- 姿势细化例程
- 匹配追踪
- 重新设计和稳定的日志记录子系统
2019 年 10 月,发布 OpenCV 4.1.2。
该版本主要改进:
- Google Summer of Code (GSoC) 项目集成:
- OpenCV.js 中的线程和 SIMD 优化
- 基于学习的超分辨率模块
- 添加了具有自动预处理和后处理功能的更高级别的 API(GSoC 项目的一部分)
- 支持来自 OpenVINO 2019R3 的 InferenceEngine 后端
- 通过通用内在机制为 MIPS 平台添加 SIMD 支持
- 整个库的更多优化:dotProd、FAST、HOG、Pyramid-LK、norm、warpPerspective 等。
- Aruco:提高了白色标记的检测精度并添加了独立的模式生成器工具
- 提高二维码检测算法的准确性
2019 年 12 月,发布 OpenCV 4.2.0。
该版本主要改进:
- 带有 CUDA 后端的集成 GSoC 项目
- 对 nGraph OpenVINO API 的实验性支持
- SIMD:StereoBM/StereoSGBM、resize、integral、flip、accumulate with mask、HOG、demosaic、moments
- 多线程:pyrDown
- 通过 FFmpeg videoio 后端解复用
- 快速频率选择性重建 (FSR) 算法
- 稀疏匹配插值的RIC方法
- LOGOS特征匹配策略
2020 年 3 月,发布 OpenCV 4.3.0。
该版本主要改进:
用于在 ARM 上加速的 Tengine 库集成
现在默认使用 nGraph OpenVINO API
SIMD:调整大小,积分
IPP-ICV版本已更新至2020.0.0
带有由推理引擎 (DLDT) 加速的 dnn 模块的新 Win 包
新的 HoughCircles 算法实现
Alpha抠图模块
RAPID 视频速率对象跟踪器实现
JPEG2000 支持的 OpenJPEG 库集成
SIFT检测器已被排除在非自由算法集中
2020 年 7 月,发布 OpenCV 4.4.0。
该版本主要改进:
- SIFT(Scale-Invariant Feature Transform)算法已移至主存储库(专利已过期)
- 支持最先进的 Yolo v4 检测器和 EfficientDet 模型
- CUDA 后端的许多修复和优化
- Obj-C / Swift 绑定
- BIMEF:一种用于弱光图像增强的仿生多重曝光融合框架
- 添加了用于文本检测的笔划宽度变换算法
2020 年 10 月,发布 OpenCV 4.5.0。
该版本主要改进:
OpenCV 许可证已更改为 Apache 2(OpenCV 3.x 将继续使用 BSD)
GSoC 结束了,所有项目都成功了,其中大部分已经合并了。 RISC-V 优化、Julia 语言绑定、实时单目标跟踪、改进的 SIFT 等
JPEG2000 现在默认使用 OpenJPEG
支持多个 OpenCL 上下文
支持最新的 OpenVINO 2021.1 版本
Tengine lite 支持在 ARM 上进行推理
CUDA 后端的许多修复和优化
为 G-API 模块添加了 Python 绑定
flann 模块的多项修复和改进
添加机器人世界/手眼标定功能
2020 年 12 月,发布 OpenCV 4.5.1。
该版本主要改进:
- 集成了更多 GSoC 2020 结果,包括 OpenCV.js 的改进、SIFT 的优化和额外的 DNN 样本
- 优化并修复了默认和 CUDA 后端中的多个层
- 支持 OpenVINO 2021.2 版本和 HDDL 后端
- 与 TBB 集成以进行多线程图形处理
- 与推理引擎 (OpenVINO)、ONNX 运行时和媒体库的进一步集成为仅使用 G-API 构建完整的视频处理管道开辟了道路添加了新的操作,包括 morphologyEx、kmeans、Background subtractor 和 Kalman filter
- 中国科学院软件研究所对 RISC-V 通用内在函数后端的重大改进
2021 年 4 月,发布 OpenCV 4.5.2。
该版本主要改进:
- 添加了对动态加载的 parallel_for 后端的支持
- 添加了 IntelligentScissors 算法实现
- 支持几个新层:Mish ONNX 子图、NormalizeL2 (ONNX)、LeakyReLU (TensorFlow) 等
- 支持 OpenVINO 2021.3 版本
- G-API 模块在推理和媒体处理领域得到改进
- 改进的硬件加速视频解码和编码
- 添加了 Android NDK 相机支持
- opencv_contrib 添加微信二维码模块
2021 年 7 月,发布 OpenCV 4.5.3。
该版本主要改进:
- 添加了对多个 highgui 后端的支持
- 使用 FFmpeg 实现硬件加速解码和编码
- DaSiamRPN 跟踪器作为 OpenCV 算法实现
- 在 dnn 模块中支持 OpenVINO 2021.4 版本
- G-API 模块:改进了 Python 绑定和 DL 推理功能,添加了仪器支持
- 一维条码支持
2021 年 10 月,发布 OpenCV 4.5.4。
该版本主要改进:
- GSoC 2021 已经结束,已经集成了几个项目:
- dnn 模块中的 8 位量化
- 改进的 Julia 绑定
- 语音识别样本
- RISC-V 的 dnn 模块优化
- 关于通用内在函数和 parallel_for 用法的教程
- 新层和模型支持
- 一些现有图层已修复
- 软网管系统实施
- 支持 OpenVINO 2021.4.1 LTS 版本
- 恢复的 LineSegmentDetector 实现
- 使用 gdb 漂亮的打印机和 XCode Quicklook 支持获得更好的调试体验
2021 年 12 月,发布 OpenCV 4.5.5。
该版本主要改进:
- videoio 模块中的音频支持(MSMF 和 GStreamer 后端)
- 更改了 SOVERSION 生成规则
- dnn 模块的改进:
- 将内置 protobuf 从 3.5.2 更新到 3.19.1
- 支持 OpenVINO 2021.4.2 LTS 版本
- gapi 模块的改进:
- 矢量化多流体后端内核
- GStreamer 和基于 oneVPL 的媒体管道支持
- 添加二维码编码器
- ximgproc 中的 Radon 变换实现
- F-DBSCAN超像素算法实现
- [GSoC] OpenCV.js dnn 通过 WebNN 加速
2022 年 16 月,发布 OpenCV 4.6.0。
该版本主要改进:
- OpenCV 项目基础设施正在迁移到 GitHub Actions 工作流程以用于 CI 和发布目的
- 添加了对 GCC 12、Clang 15 和 FFmpeg 5.0 的支持
- dnn 模块的改进:
- 各种层和后端的改进和修复
- 添加了 TIM-VX NPU 支持
- 支持 OpenVINO 2022.1 版本
- 添加了语音识别示例
- gapi 模块的改进:
- 在 Fluid 后端优化了多个内核
- 引入 OpenCV AI Kit 后端
- 添加了用于模型基准测试的管道建模工具
- 为 ARM 版本添加了对 Windows 的 NEON 支持
2022 年 12 月,发布 OpenCV 4.7.0。
该版本主要改进:
- ArUco 和 ChArUco 移动到主存储库中的 objdetect 模块
- 用于可扩展向量指令 (RISC-V RVV) 的新通用内在函数后端
- CUDA 12 和视频编解码器 SDK 支持
- dnn 模块的改进:
- 支持多种新操作和网络架构
- 卷积运算的性能优化
- 添加了华为 CANN 后端
- 改进了对 OpenVINO 2022.1 的支持
- 对动态加载后端的实验性支持(基于 OpenVINO 运行时)
- 图像和视频编解码器:
- 用于多页图像格式的基于迭代器的 API
- 在内置 libjpeg-turbo 中启用 SIMD 加速
- libspng 整合
- 改进了 FFmpeg 5.x 集成并添加了 GRAY16 格式支持
- Android 上的 H264/H265 支持
- Orbbec RGB-D 相机后端
- 通过 GStreamer 后端改进音频输入
- 新算法:StackBlur、NanoTrack