您现在的位置是:首页 > 文章详情

OpenCV 4.12.0 发布

日期:2025-07-17点击:201

OpenCV 2025 年的夏季更新现已发布。此次更新涵盖了CoreImgprocCalib3dDNNObjdetectPhotoVideoIOImgcodecsHighguiG-APIVideoHAL模块,以及 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

原文链接:https://www.oschina.net/news/360842/opencv-4-12-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章