据 OpenCV 中国开发团队消息,为了进一步加速 OpenCV 图像处理,即将推出的 OpenCV 4.9.0 版本提供了图像处理相关的高频使用接口的华为昇腾(Ascend)支持。

17023754171111000.webp

除此之外,2023 年 10 月 17 日,OpenCV社区正式接纳昇腾 + openEuler 作为持续集成(Continuous Integration,CI)系统的操作系统之一,这意味着未来 OpenCV 的代码修改均会在昇腾 + openEuler 环境中进行自动化构建及测试,保障了 OpenCV 在 openEuler 上支持的稳定性。

据介绍,本次提供的以昇腾为后端的图像处理接口封装在 OpenCV 扩展包(opencv_contrib)的 cannops 模块中,包括图像矩阵的算术运算、通道拆分合并、图片裁剪、翻转、调整大小、转置等图像处理的 Python 和 C++ 接口,处理精度与 CPU 后端的计算结果相同。

OpenCV 是一个开源的跨平台计算机视觉库,提供了图像处理,机器学习,视频分析等功能,支持多种开发语言,多平台和多类型后端。其中图像处理模块提供了矩阵的算术和逻辑运算,图像处理,视频编解码等,被广泛运用于计算机视觉领域的数据预处理和后处理。

附调用昇腾后端实现图像处理的示例:

除了对昇腾必要的初始化、去初始化之外,用户无需学习 CANN API,仅需要将原来的接口添加 cann 包名(C++ 接口为使用 cann 命名空间),即可使用昇腾算力。

import cv2

# cann初始化
cv2.cann.initAcl()
# 选择执行运算的设备编号
cv2.cann.setDevice(0)

# 图像处理(以图像旋转为例)
img = cv2.imread('/path/to/image')
# 添加cann包名调用昇腾接口
ret = cv2.cann.rotate(img, 0)
cv2.imwrite('/path/to/result', ret)

# cann去初始化
cv2.cann.finalizeAcl()