OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
Ascend NPU 图像处理

目标

在本指南中,您将深入了解已使用的 Ascend 算子的线程安全性,并学习如何有效地使用 Ascend 算子进行图像预处理,以及了解它们的使用限制。

前言

我们提供了一套常用的矩阵运算算子,支持 OpenCV 中的 Ascend NPU。为了方便用户,新的 'AscendMat' 结构及其关联算子保持与 OpenCV 中 'Mat' 接口的兼容性。这些算子涵盖了广泛的常用函数,包括算术运算、图像处理运算和图像颜色空间转换。所有这些算子都是使用 CANN(Compute Architecture of Neural Networks) 实现的。Ascend 算子通过使用 CANN 来加速 NPU 上的运算。当处理更大的图像时,例如尺寸为 2048x2048、3840x2160、7680x4320 等的图像,这种加速效果尤为明显。

关于线程安全性的说明

我们的流函数是通过调用 CANN 算子实现的。在同一流中,任务按顺序执行,而在不同的流之间,任务并行执行。事件机制的使用确保了流之间任务的同步,请参阅 流管理 文档以获取详细信息。

图像预处理示例

在本节中,您将学习如何使用 Ascend 算子进行图像预处理,包括以下函数:

  • Add (加法)
  • Rotate (旋转)
  • Flip (翻转)

代码

说明

输入图像

设置 CANN

图像预处理示例

拆卸 CANN

结果

  1. 原始 RGB 输入图像,尺寸为 (480, 640, 3)
puppy
  1. 引入高斯噪声后,我们得到以下结果
puppy_noisy
  1. 当应用旋转操作,旋转码为 0(顺时针旋转 90 度)时,我们得到此结果
puppy_noisy_rotate
  1. 在应用翻转操作,翻转码为 0(围绕 x 轴翻转)后,我们得到最终结果
puppy_processed_normalized