打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

一、版本概览

OpenCV 4.13.0 是 4.x 系列在 2025 年的年度压轴版本。该版本重点体现在以下几个方面:

  • • 核心模块输入输出机制全面修复与增强

  • • ARM(Windows ARM、RISC-V、SVE、RVV)平台性能大幅优化

  • • 图像处理、视频处理算法精度和稳定性显著提升

  • • DNN、Python、Java、JS 绑定持续完善

  • • 构建系统支持最新编译器、CUDA、工具链

二、Core 模块(核心模块)

Core 模块在 4.13.0 中主要聚焦于API 正确性、跨平台稳定性和性能

  • • 改进 InputArray 和 OutputArray 对std::vectorstd::vector 的处理精度

  • • 让cuda::GpuMatND正式兼容 InputArray / OutputArray

  • • 当 API 明确定义时,强制为空矩阵指定输出类型

  • • 新增 InputArray / OutputArray 的std::vector长度检查

  • • 新增 16 位 LUT 支持以及对应的 HAL 接口

  • • 新增cv::Mat::copyAt,用于 ROI 拷贝操作

  • • 扩展 JSON 支持:

    • • 支持 null 解析

    • • 支持转义反斜杠

  • • 修复cv::solveCubic的数值不稳定问题(系数归一化)

  • • 修复 Windows 下临时文件竞争条件

  • • 并行框架失败尝试时恢复原始名称

  • • 移除 OPENCV_FOR_OPENMP_DYNAMIC_DISABLE,改用标准 OMP_DYNAMIC

  • • 启用 FP16 转换,但在 Windows ARM 上禁用 NEON FP16 运算

  • • 修复 Windows ARM64 下点积累计误差导致的 NORM 测试失败

  • • 为 Windows ARM 添加多项性能优化

  • • 修复 POWER9 平台因 VSX 不支持 float64 转换导致的问题

  • • 修复 RISC-V RVV 平台 HAL 中就地 flip 错误

  • • 新增 inRange 的 HAL 入口

  • • 禁用 cv::compare 中 AVX512 IPP 路径以避免性能回退

三、Imgproc 模块(图像处理)

该模块是 4.13.0 更新最密集的模块之一:

  • • 新增迭代相位相关算法

  • • 新增cv::minEnclosingConvexPolygon

  • • 改进cv::convexHull在近零凸性场景下的处理

  • • 在可能情况下保持 convexHull 输出索引单调

  • • 修复连通组件中的溢出问题

  • • 修正cv::minAreaRect:角度范围强制在 [-90, 0)

  • • 使用 double 提升 minAreaRect 精度

  • • CLAHE 新增 BitShift 选项

  • • 修复cv::minEnclosingCircle多个问题

  • • 修复 HoughLines 中 rho 的偏移问题

  • • 修复 drawContours 中 LINE_4 / LINE_8 交换错误

  • • 修复 approxPolyDP 算法:距离应计算到线段而非直线

  • • 高斯模糊性能优化(含 AVX512)

  • • blur 与 bilateralFilter 多项性能提升

  • • pointSetBoundingRect 新增可扩展 SIMD 分支

  • • RISC-V RVV 新增 Canny、Scharr、Sobel HAL 实现

  • • 优化 ThickLine 在远距离点之间的绘制

  • • 修复 stackBlur 中的堆缓冲区溢出

  • • 修复 bilateralFilter 在 32F 图像中的越界读取

  • • 修复 IPP warp 函数中的内存泄漏

  • • 限制 IPP 双边滤波 tile 数避免过小 tile

  • • 修复 IPP HAL 中 warp perspective 多线程实现错误

  • • 新增无状态 HAL,用于滤波和形态学操作

四、Imgcodecs 模块(图像编解码)
  • • 扩展 JPEG、PNG、WebP、AVIF 的元数据支持(ICCP、XMP、cICP)

  • • 新增 OpenEXR 多光谱读写支持

  • • 严格校验编码参数

  • • 放宽多种格式的解码尺寸限制(超过 1GB)

  • • PNG 新增 IMWRITE_PNG_ZLIBBUFFER_SIZE 选项

  • • 修复 WebP 内存泄漏

  • • 修复旧版 GDAL FITS 图像翻转问题

  • • 新增 32bpp BMP(BI_BITFIELDS)支持

  • • 修复 BMP 中多处溢出和越界

  • • 修复 PNG 相关模糊测试发现的潜在崩溃

  • • 修复 PNG 多处溢出和错误处理

  • • 修复 PNG 混合时 alpha 通道处理

  • • AVIF 单色图像设置 matrixCoefficients 为 UNSPECIFIED

  • • 增强 AVIF 编解码安全性

五、VideoIO 模块(视频输入输出)
  • • 支持通过 FFmpeg 按索引打开摄像头

  • • 新增 FFmpeg 8.0 支持

  • • Orbbec SDK 新增时间戳、自定义帧率分辨率及畸变参数

  • • Aravis SDK 支持系统级安装并修复像素格式问题

  • • macOS 新增 Orbbec Gemini330 支持

  • • 修复 FFmpeg 后端负 DTS 时帧定位错误

  • • 修复 VideoCapture 设置再获取属性异常

  • • 新增 Raspberry Pi 4/5 HEVC 硬件加速

  • • FFmpeg VideoCapture 支持 swscale 线程优化

  • • 修复 VideoWriter writeFrame 返回码

  • • 新增跳过 FFmpeg 日志回调选项

  • • 支持无 libavdevice 编译

  • • 捕获 _com_error 防止调试器刷屏

  • • 修复 FFmpeg 硬件解码时 picture_sw 泄漏

  • • 修复 DirectShow 白平衡映射错误

  • • 修复 iOS 下 VideoWriter::release 崩溃

六、Features2D 模块
  • • 修复 ORB 掩码非 255 值导致的不一致

  • • 修复 BRISK 指针运算

  • • FAST 特征点缓存分配启发式优化

  • • Windows ARM 上 AGAST 性能优化

  • • RISC-V RVV 新增 FAST HAL

七、Objdetect 模块
  • • ArUco 新增基于像素的置信度

  • • 改进多二维码检测与解码

  • • 防止退化点集导致 QR 解码异常

  • • 修复 QRCodeDetector 多处崩溃

  • • 移除角度计算中的浮点运算

  • • ChArUco 通过减少临时拷贝提速

  • • 修复栈作用域错误

  • • HOG 在近似提示下启用线性 resize 快路径

八、DNN 模块
  • • 新增 ONNX、TFLite 多种算子支持

  • • 允许 protobuffer 使用 LITE_RUNTIME

  • • 修复 ONNX 卷积隐式 kernel 解析问题

  • • 修复 Winograd 标志处理

  • • ARM NEON / SVE fastGEMM1T 优化

  • • 修复 DNN 层中的堆缓冲区溢出

  • • softmax_3d 循环展开优化

九、Calib3d 模块
  • • 新增 estimateTranslation2D

  • • 替换 P3P 算法实现

  • • stereoCalibrate 新增 QR 分解选项

  • • fisheye::undistortPoints 收敛性改进

  • • 修复 USAC 与 PnP 越界访问

十、Stitching 模块
  • • 修复多带融合内存泄漏

  • • warp 参数按值传递避免 CUDA 竞态

  • • Windows ARM 下 fast.cpp 循环展开优化

十一、HighGUI 模块
  • • 修复 Qt 6.9 及更新版本链接问题

  • • 修复外部 QApplication 生命周期冲突

  • • 修复 Qt 后端窗口内存泄漏

十二、G-API 模块
  • • 新增 Python 中的 G-API 自定义流输入源

  • • 为 OpenVINO 参数新增 cfgEnsureNamedTensors 选项

  • • 为 OpenVINO 参数新增 cfgClampOutputs 选项

  • • 重命名 WorkloadType::notify() 为 WorkloadType::set()

  • • 支持在 OpenVINO 与 ONNX OVEP 中动态设置工作负载类型

  • • 修复 G-API 有状态算子中的空指针解引用

  • • 更新已弃用的 ov::element::undefined

十三、Video 模块
  • • findTransformECC 与 computeECC 新增多通道支持

  • • findTransformECC 新增可选模板掩码

  • • 后景分离器新增可选“已知前景掩码”

  • • DISOpticalFlow 新增 setCoarsestScale 接口

  • • 修复 Farneback 光流中潜在的指针溢出问题

十四、ML 模块
  • • 修复 ml::KDTree::findNearest 的错误实现

十五、Photo 模块
  • • merge 系列函数新增 16U 与 32F 数据类型支持

十六、JavaScript 绑定
  • • 新增将 opencv_contrib 一并打包进 JS 绑定的选项

  • • 修复 JS 生成器中的字符串属性绑定

  • • helpers.js 新增 .delete 支持

  • • Mat.clone() 新增深拷贝行为

  • • 移除废弃的 DEMANGLE_SUPPORT 选项

  • • 针对 WASM 调整 CONV_NR_FP32 的尺寸

  • • 新增用于 fastconv 的大标量卷积核

  • • 修复函数返回类型在命名空间中的生成问题

  • • 修复命名空间 Ptr 工厂返回类型的 JS 绑定

十七、Python 绑定
  • • 调整 Python 绑定的日志系统

  • • 在 Python 类型标注中将 Feature2D.detectAndCompute 的 mask 标记为可选

  • • calib3d 相关接口中,将 distCoeffs / R / D 标记为可选

  • • 新增 DLPACK 数据交互支持

  • • 修复 Python 绑定中的内存泄漏

  • • 新增 PathLike 类型标注,用于文件路径参数

  • • 修复 PathLike 参数在 pyopencv_to 中的内存泄漏

  • • 类型生成优化:使用 export_name 作为 AliasTypeNode 的解析类型名

  • • 修复 pytest-cov 的误报警告

  • • 修复 Python 标量类型推导问题

  • • 修复绑定头文件解析器中 ifdef 状态机错误

  • • 包装 cv::findCirclesGrid 参数结构体中的 GridType 字段

十八、Java 绑定
  • • 新增选项:生成基于新 Cleaners 接口或传统 finalize 的 Java 包装代码

  • • 启用 Vec4i 的 Java 包装生成

  • • 新增 Java 对 List 的支持

十九、应用程序与工具
  • • 交互式相机标定工具改进:

    • • 新增选择相机后端选项

    • • 扩展标定标志

    • • 灰度相机预览效果改进

  • • 对齐标定工具与示例输出字段,便于后续复用

  • • 仅在适用场景启用标定板不完美度修正

  • • ArUco 图案生成器新增索引偏移选项

  • • 将图案生成器移动至 apps 并重写教程

  • • 修复 generate_pattern.py 中的 charuco_board_pattern

  • • 更新教程中完全相同图像的 PSNR 说明

二十、构建系统(Build)
  • • 集成 KleidiCV 0.7,支持 macOS 与 Linux,默认启用

  • • 集成支持 AVX512 的 IPP ICV

  • • 修复多项静态代码分析工具发现的问题

  • • 新增对 Visual Studio 2026 的支持

  • • 新增 CUDA 13.0 支持,并修复与现代 CUDA 的兼容问题

  • • 修复 OpenBLAS 探测逻辑

  • • 新增可复现构建支持(可选忽略宿主系统版本)

  • • 修复旧版 GCC 的构建问题

  • • 修复 Qt 下 Unicode 跟踪符号问题

  • • 修复 Eigen 在 3.4.0 之后版本中的诊断问题

  • • 新增 CMake 选项,用于强制在 IPP HAL 中使用 IPP 调用

二十一、总结

代码地址:github.com/opencv/opencv

OpenCV 4.13.0 是一个工程质量与平台适配并重的重大版本更新:

  • • 在Windows ARM、RISC-V、SVE、RVV等新兴架构上投入大量优化

  • • 图像处理算法在精度、稳定性和性能上全面加强

  • • 多语言绑定(Python / Java / JavaScript)持续成熟

  • • 构建系统紧跟最新编译器、CUDA 与工业级工具链

对于正在使用 OpenCV 4.x 的开发者来说,4.13.0 是一个非常值得升级的年终版本

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。