opencv 4.13.0 发布!2025 年终史诗级更新全解析:性能、ARM、AI、视频、Python、Java 一次看全
代码地址:github.com/opencv/opencvOpenCV 4.13.0 是一个工程质量与平台适配并重在等新兴架构上投入大量优化图像处理算法在精度、稳定性和性能上全面加强多语言绑定(Python / Java / JavaScript)持续成熟构建系统紧跟最新编译器、CUDA 与工业级工具链对于正在使用 OpenCV 4.x 的开发者来说,4.13.0 是一个非常值得升级的年终版本。
·



一、版本概览
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::vector与std::vector<std::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 是一个非常值得升级的年终版本。
更多推荐
所有评论(0)