OpenCV 2025 年的夏季更新现已发布。此次更新涵盖了Core、Imgproc、Calib3d、DNN、Objdetect、Photo、VideoIO、Imgcodecs、Highgui、G-API、Video和HAL模块,以及 Python、Java 和 JavaScript 语言绑定等众多内容。
此次更新的亮点包括:
imgcodecs
添加了对 GIF 的编解码支持- 显著提升了PNG 和 Animated PNG文件的处理能力
- 增加了对Animated WebP的支持
- 特别值得一提的是对 RISC-V RVV 1.0 的新 HAL 实现
完整的更新日志如下:
Core 模块
- 添加了用户自定义的日志回调功能(#27154)
- `cv::Mat` 添加了 `reinterpret()` 方法(#25394)
- 修复了空的 N 维数组构造问题(#27362)
- 修复了 `FileStorage` 对 `int64` 支持的 bug(#26846)
- 修复了大图像中 `cv::meanStdDev` 的溢出问题(#26867)
- `cv::mean` 函数的 HAL 加速(#26895)
- 向量化加速 `cv::normalize` 和 `cv::norm`(#26885)
- 为 `exp` 和 `sqrt` 启用了 `SIMD_SCALABLE`(#26886)
- 使用通用指令向量化 `normDiff`(#27042)
- 重构了 `hal_rvv` 中的 `normDiff`,并扩展支持更多数据类型(#27115)
- 进一步向量化加速带掩码的 `copyTo`(#27145)
- 修复了 `POWN` 的 OpenCL 实现(#27274)
- 将遗留的 universal intrinsics 恢复为独立头文件(#27327)
- 提高了解析三次方程 (`solveCubic`) 的精度(#27331, #27347)
- 弃用了在 `cv::UMat` 从 `std::vector` 构造时的 `copyData` 参数,并始终复制数据(#27408)
Imgproc 模块
- 优化并减少了 `cv::findContours` 的内存使用(#26690, #26834)
- 修复了超大图像中 `cv::HoughLinesProbabilistic` 的整数溢出问题(#26744)
- 修复了图像变换中多个可能的溢出问题(#26765, #26776)
- 增强了椭圆拟合的鲁棒性(#26773)
- 添加 `cv::THRESH_DRYRUN` 标志以在不实际阈值化的情况下获取自适应阈值(#26836)
- 修复了奇异情况中 `cv::getPerspectiveTransform` 的行为(#26926)
- 使用 universal intrinsics 优化了 `bayer2Gray`(#26868)
- 为 `cv::threshold` 添加了可选掩码参数(#26842)
- 在使用 `cv::WARP_INVERSE_MAP` 时,通过多线程加速 `cv::remap` 计算(#27108)
- 重构了 OpenCL 中 HSV 色彩转换表的初始化以避免数据错误(#27287)
- 修复了双边滤波中 `sigmaColor` 和 `sigmaSpace` 的问题(#27309)
- 提升了中值滤波 (`medianBlur`) 的性能(#27299)
- 添加了 `cv::getClosestEllipsePoints` 用于获取椭圆上最近的点(#26299)
- 修正了 `cv::distanceTransform` 在单线程下的 IPP 实现(#27432)
- 修复了带掩码时 `cv::matchTemplate` 的崩溃(#26703)
- 为形态学操作添加了菱形结构元素(#27441, #27492)
- 提升了 `cv::intersectConvexConvex` 在极端情况中的精度(#26974)
Calib3d 模块
- 修复了单应性估计中的内点更新问题(#26742)
- 为鱼眼相机模型添加了 `cv::solvePnPRansac` 实现(#26669)
- 修复了 `cv::findChessboardCornersSBWithMeta` 在使用 `cv::CALIB_CB_LARGER` 标志时的角点顺序问题
- 修复了 `FilterSpecklesImpl` 中的逻辑错误(#26996)
- 优化了鱼眼模型下的反畸变点计算(#26988)
- 优化了新相机矩阵估计及相关函数(#27001)
- 为 `cv::drawAxes` 投影轴超出相机视野时添加了警告(#27311)
- 添加图像尺寸检查以避免 `StereoSGBM` 的非正定(#27305)
- 修复了 SQPNP 正交化相关 bug 并简化了列向量复制(#27437)
DNN 模块
- 在 TFLite 解析器中添加了对 `StridedSlice`(无 strides,仅切片)的支持,同时支持 TF 的 strides(#27273)
- 增加了 conv+eltwise 融合的处理器,适用于多输出节点(如 Split)(#27326)
- 在 TFLite 解析器中新增了若干操作的导入:SUB、SQRT、DIV、NEG、SQUARED\_DIFFERENCE、SUM(#27307)
- 修复了 TFLite 解析器中标量和一维张量的支持(#27307)
- 减少了 NHWC<->NCHW 转换次数(#27307)
- 在获取网络中最新 layer pin 之前增加了检查(#27353)
- 添加了 OpenVINO NPU 支持(#27363)
- 向 CANN 后端添加了更多操作(#24756)
Objdetect 模块
- 扩展 `ArUcoDetector` 以更高效地支持多字典(#26934)
- 修复了 Aruco 标记板旋转生成问题(#26753)
- 修复了图像边缘附近 Aruco 标记检测错误(#26968)
- 修复了 QR 编码器/解码器中无效向量访问问题(#26532)
- 修复了 QR 码编码器的自动版本选择(#27244)
- 添加了 QRCode 的 ECI 编码支持(#24426, #27486)
- `ChAruco` 棋盘一致性检查现在可选(#26824)
Photo 模块
- 为 `cv::fastNlMeansDenoising` 添加了 16 位支持并更新了测试(#26831)
- 优化了本地去色流程(#27041)
- 修复了 Debevec 算法使用的三角权重在边缘处不为零的问题(#27270)
- 修复了 HDR 三角权重和色调映射中的 NaN,并更新了教程中的 LDR Ground Truth(#27396)
VideoIO 模块
- 修复了通过环境变量提供的 FFmpeg 自定义参数处理无效的问题(#26793)
- 修复了 `cv::CAP_PROP_ORIENTATION_AUTO` 的默认行为(#26800)
- 在使用 DShow 后端并提供自定义参数时提高了相机打开性能(#26601)
- 为安卓原生相机捕捉添加了缩放支持(#26837)
- 修复了非 BGR 输出时的 V4L 帧尺寸问题(#27193)
- 添加了对 Orbbec Gemini 330 相机的支持(#27230)
- 修复了 `cv::VideoWriter` 写入无颜色图像时失败的问题(#27153)
- 修复了 Android 中 `setCameraIndex` 的问题(#27419)
Imgcodecs 模块
- 扩展图像 I/O API,支持元数据(#27499)
- 添加了内存中动画编码和解码功能(#27013)
- 添加了 Animated PNG 的隐藏帧支持(#27127)
- 为 imgcodecs 添加了 GIF 编解码支持(多个 PR)
- 添加了 Animated WebP 支持(#25608, #27457)
- 添加了 GDAL 多通道支持(#27458)
- 修复了 Windows 下 AVIF 链接问题(#26762)
- 显著改进了 PNG 和 Animated PNG 文件的处理(多个 PR)
- 添加了 libspng 集成的多个修复(#27314)
- 修复了 JpegXL 解码器中的内存泄漏(#26787)
- 为 JpegXL 添加了 `cv::IMREAD_UNCHANGED` 和其他标志的支持(#26788)
- 实现了 JpegXL 的 `imdecode()`,支持从内存直接读取(#26844)
- 添加了 JpegXL 的无损压缩支持(#27384)
- 修复了使用 libspng 后端读取 16 位 PNG 的问题(#27113)
Highgui 模块
- `displayOverlay` 超时后不再自动消失(#27082)
- 修复了 Qt 后端关闭窗口的问题(#27170)
- 修复了 Qt 窗口调整大小的回归问题(#27282)
G-API 模块
- 为 OpenVINO Execution Provider 的顺利添加引入了绕过方案:提前创建 `Ort::Env`(#26983)
- 添加了 `AddRgbFeature()`,提升了 `ComputeRgbDistance` 的鲁棒性(#26682)
- 在 G-API 中添加了 MS Media Foundation 的可用性检查(#27355)
Video 模块
- 添加了预加载 DNN 模型的追踪器工厂(#26875)
HAL 模块
- 将 HAL 实现抽出为独立文件夹(#27252)
- RISC-V RVV 1.0 实现了新的 HAL
- 重构 OpenVX 实现为 HAL(多个 PR)
- 部分重构了 Intel IPP 集成为 HAL(多个 PR)
- 修复了 HAL 中对 `cv` 命名空间的依赖(#26878)
- 更新了 ARM 上的 KleidiCV HAL 至版本 0.5
- 扩展了 Qualcomm 平台的 FastCV HAL(多个 PR)
- 添加了多个新 HAL 实现(如 `cv::sum`, `copyTo`, `cv::DFT`, `cv::DCT`, `convert`, `cv::norm`, `minMaxIdx`, `cv::calcHist`, `cv::pyrUp`, `cv::remap` 等)
Python, Java, JavaScript 绑定
- 添加了头文件解析器的条件包含支持(#27325 等)
- 更新了 `predefined_types.py`(#26826)
- 添加了动画绑定(#26813)
- 修复了 `cv::imread` 的错误 Python 类型提示(#26890)
- 将 `tostring()` 和 `fromstring()` 替换为现代 Python 兼容用法(#26932 等)
- 替换 `ndarray.ptp()` 为 `np.ptp()` 以兼容 NumPy 2.0(#27133)
- 扩展了 Java DNN、Features2d 的绑定(多个 PR)
- 修复了 JS 中 `std::vector<Point3f>` 的处理(#27291)
- 为 Java 添加了带缓冲流的 `cv::VideoCapture` 构造器(#27284 等)
- 扩展了 `cv::HoughLinesWithAccumulator` 的绑定(#27377)
- 修复 Kotlin 2.0 中的不安全强制类型转换错误(#26354)
平台支持
- 修复了 Linux 上 OpenBLAS 的检测(#27029)
- 兼容 CMake 4(#27192)
- 修复了支持 Vulkan 的 Android 构建问题(#26765)
- 修复了 Power 架构上的 VSX 指令实现(#26750 等)
- 为 POWER 架构添加了 `getauxval` 和 `elf_aux_info` 的 CMake 检查(#26798)
- 修复了 OpenBSD 的构建问题(#26803)
- 添加了对 Nvidia Blackwell GPU 架构的初步支持(#26820)
- 修复了 Carotene HAL 中对 `cv` 命名空间的依赖(#26878)
- 统一了各模块的 `_DEBUG/NDEBUG` 处理(#26151)
- 修复了 QNX 7.0 的构建问题(#26985)
- 切换为静态链接 FastCV(#26917 等)
- 在 CUDA 工具包 ≥ 12.8 时强制启用 C++17 标准(#27112 等)
- 修复了 Windows ARM64EC 的构建(#27416)
- 修复了 Cygwin 环境下的文件系统支持(#27484)
详细信息可参考:https://github.com/opencv/opencv/wiki/OpenCV-Change-Logs#version4120