CANN体验官第四期-随手记2

举报
黄生 发表于 2022/05/31 13:14:00 2022/05/31
【摘要】 关于图片格式的转换,看了一些资料,这里汇整一下。首先(图像/视频数据)预处理可以分为DVPP和AIPP,DVPP(Digital Video Pre-Processor):昇腾AI处理器内置的图像处理单元,通过AscendCL(ACL)媒体数据处理接口提供强大的媒体处理硬加速能力,主要功能包括缩放、抠图、格式转换、图片编解码、视频编解码等。AIPP(Artificial Intelligen...

关于图片格式的转换,看了一些资料,这里汇整一下。
首先(图像/视频数据)预处理可以分为DVPP和AIPP,

  1. DVPP(Digital Video Pre-Processor):昇腾AI处理器内置的图像处理单元,通过AscendCL(ACL)媒体数据处理接口提供强大的媒体处理硬加速能力,主要功能包括缩放、抠图、格式转换、图片编解码、视频编解码等。
  2. AIPP(Artificial Intelligence Pre-Processing):人工智能预处理,在AI Core上完成数据预处理,主要功能包括改变图像尺寸(抠图、填充等)、色域转换(转换图像格式)、减均值/乘系数(改变图像像素)等。

所以因为硬加速能力,我们应该使用DVPP,可以有更快的速度;但是同时也是因为硬加速能力,支持的功能可能会不太全面。这就是成也萧何,败也萧何。例如,在昇腾310 AI处理器和昇腾910 AI处理器上,由于DVPP仅支持输出YUV格式的图片,如果模型需要RGB格式的图片,则需要再经过AIPP做色域转换的处理。

恰好这里有一个进阶的体验任务:实现图片格式的转换(从 YUV420SP NV12 格式转换成 RGB888 格式)。同时因为体验的是新的昇腾310处理器,所以这个限制都不是事了:
image.png
这里用到了这个新的resize的API,将输入图片和输出图片的格式设置成不同的,这样借用resize功能来达到转换图片格式的目的。

看一下代码(图片缩放)里,有2个format,分别是输入图片的format和输出图片的format,值都是1:
image.png

枚举值1代表什么呢?可以查到:HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV420SP NV12 8bit
image.png
根据HI_PIXEL_FORMAT_RGB_888 = 12, // RGB888
代码就比较好改了。运行也比较正常。
最后说一下对于缩放、转换格式后的文件的查看,

YUV的我用的这个软件:
image.png
叫YUV eye,需要注册一下。打开时手工指定文件类型、宽高
image.png

RGB的话,参照一位坛友的帖子(如何查看RGB888格式的数据文件):
用一段python代码转换为bmp后查看:

# importing image object from PIL
from PIL import Image
import sys

if __name__ == "__main__":
    if (len(sys.argv) != 5):
        print('Usage: python3 raw2bmp.py out.1920x1080.rgb 1920 1080 out.1920x1080.bmp')
        sys.exit()

    file = open(sys.argv[1], 'rb')
    rawData = file.read()
    file.close()

    imgSize = (int(sys.argv[2]), int(sys.argv[3]))

    # Use the PIL raw decoder to read the data.
    im = Image.frombytes("RGB", imgSize, rawData)

    # Save to file 
    im.save(sys.argv[4])
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。