
发表 开放CV 5.0.0 ——一个用于计算机视觉和图像处理的开源库的重要版本发布。该版本发布于 6月6 2026年 并且已经在项目的 GitHub 代码库中标记为当前版本。OpenCV 根据以下许可证分发: Apache的2.0.
此次发布的精髓在于 OpenCV 从“经典计算机视觉库”向更现代化的计算机视觉/人工智能平台转型:该项目清理了旧的 API,重构了神经网络推理模块,扩展了 ONNX 支持,增加了对 VLM/LLM 脚本的支持,并更新了 3D/校准堆栈。开发者将 OpenCV 5.0 描述为一个目前较为稳定的分支,新功能将主要在此分支中添加。
主要变化
新型深度神经网络推理引擎。
DNN 模块现在采用了一种与旧引擎共存的新引擎。它能更好地处理动态张量形状、子图和现代 ONNX 特性。据称覆盖范围更广。 ONNX规范的80%而在 OpenCV 4.x 中,覆盖率不到 23%。
这可能是本次版本更新中最大的变化:OpenCV 正在朝着不仅仅是模型封装器,而是现代神经网络的成熟内置推理引擎的方向发展。加载模型时选择引擎。
cv::dnn::readNet() 及其相关函数新增了 ENGINE_AUTO 参数。默认情况下,OpenCV 会首先尝试使用新引擎,如果失败则回退到经典引擎。此行为也可以通过 OPENCV_FORCE_DNN_ENGINE 环境变量进行配置:使用旧引擎、新引擎、自动模式或 ONNX Runtime。旧项目无需立即完全切换到新引擎,但新模型可以逐步迁移到新引擎。与 ONNX 运行时集成。
现在可以使用启用 ONNX Runtime 的 CMake 参数来构建 OpenCV。OpenCV 使用其自身的 ONNX 解析器来构建 ORT 图,因此不需要完整的 ONNX 软件包。构建时可以使用以下 CMake 参数:-DWITH_ONNXRUNTIME=ON 和 -DDOWNLOAD_ONNXRUNTIME=ON;对于 NVIDIA GPU,可以使用 -DDOWNLOAD_ONNXRUNTIME_GPU=ON。此功能对于需要立即使用 GPU 进行推理的用户非常有用,因为 OpenCV 的新 DNN 引擎目前只能在 CPU 上运行。支持视觉语言模型。
新的深度神经网络引擎包含分词器、注意力层、解码模块、后处理模块和键值缓存,这些都是开箱即用运行 VLM 模型所必需的。该库最初用于图像处理,现在正扩展到同时处理图像和文本的模型领域。新版 DNN 引擎的 GPU 支持尚未就绪。
OpenCV 5.0 中的新引擎目前仅支持 CPU。官方承诺在未来的版本中提供原生 GPU 支持;目前,对于 GPU 用户,建议使用经典引擎或包含 ONNX 运行时和 NVIDIA 执行提供程序的版本。对于服务器或桌面 CUDA 推理,OpenCV 5.0 本身尚不足以取代专用运行时。旧版 Darknet 和 Caffe 解析器已被移除。
由于大多数模型已迁移到 ONNX 格式,开发者已移除 Darknet 和 Caffe 解析器。TFLite 目前仍将保留在经典引擎中,计划稍后迁移到新引擎。OpenCV 正在放弃旧格式,并将 ONNX 作为主要的模型交换格式。对遗留API进行重大清理。
OpenCV 1.x 的 C API 已被移除:诸如 cvCreateMat() 之类的函数以及 CvMat 等旧结构体不再是核心 API 的一部分。OpenVX 支持也已被移除,G-API 模块已移至 opencv_contrib,经典的 ML 模块也已移至此处。这对旧项目来说是一个重大变更,但早就应该进行了:该库正在摆脱数十年积累的技术债务。Features2D 更名为 Features。
该模块已扩展以支持来自神经网络的现代特征向量。SIFT、ORB、FAST、GoodFeaturesToTrack 和 MSER 已保留在主代码库中,而旧版检测器和描述符已移至 opencv_contrib。此外,还新增了 ALIKED、DISK 和 LightGlue 匹配器。OpenCV 显然正在适应现代图像处理流程,在这些流程中,图像特征越来越多地使用神经网络而非传统算法进行提取。Core 中的新数据类型。
新增了 CV_16BF / cv::bfloat、CV_32U、CV_64U、CV_64S 和 CV_Bool 类型。同时,对 N 维数组、一维数组和零维标量的支持也得到了改进。LAPACK 现在始终可用:如果缺少外部库,OpenCV 会构建一个内置的最小子集。这些改进对于深度神经网络 (DNN)、数值算法以及与现代数据格式的兼容性至关重要,因为 bfloat16 和扩展类型在这些格式中越来越常见。图像处理速度已得到提升。
imgproc 中的 WarpAffine、warpPerspective 和 remap 函数已进行重写。据称,性能提升幅度从 10% 到 300% 以上不等,具体取决于平台、图像大小、数据类型和操作标志。
这不仅仅关乎人工智能——此类优化对于经典任务也至关重要:视频流、稳定、投影变换以及推理前的数据准备。改进了文本输出。
旧的文本渲染引擎已被基于 STB 的 TrueType 引擎取代,该引擎内置了 Rubik 可变字体。用户可以嵌入自定义字体,并且增加了对 Unicode 的广泛支持。然而,如果没有 Harfbuzz,阿拉伯语和梵文等复杂文字仍然无法正确显示,并且不支持彩色表情符号。OpenCV 在生成注释、调试图像和可视化方面变得更加便捷,无需外部库。更新了3D和相机校准数据。
calib3d 分为 geometry、calib、stereo 和 ptcloud 四个部分。USAC 已成为鲁棒单应性矩阵、本质矩阵/基础矩阵、PnP 等任务的标准后端。此外,还新增了多相机标定流程,并初步支持网格和点云处理,包括 TSDF、ICP 以及 .ply 和 .obj 文件的导入和导出。这对于机器人、SLAM、AR/VR 和多相机系统而言意义重大,因为长期以来,仅靠 2D 处理已无法满足这些应用的需求。示例和文档已修订。
过时的示例已被移除,剩余的示例也已更新。DNN 示例现在使用共享模型集合,可通过 download_models.py 脚本下载。新增了 VLM 和 LDM 的实验性示例,文档也采用了现代化的主题,新增了快速搜索、浅色/深色模式以及改进的导航。对于如此庞大的库而言,这并非表面功夫:完善的文档和可运行的示例直接影响开发者是否会迁移到 OpenCV 5.x。
最终,OpenCV 5.0 不仅仅是又一个优化版本,而是一次意义重大的升级:它减少了 OpenCV 1.x 时代的遗留代码,更加注重 ONNX、神经网络推理、现代特性、3D 处理和异构加速。然而,由于 C API 的移除以及部分模块被转移到 opencv_contrib,旧项目的过渡可能需要一些调整。
来源: linux.org.ru
