PipeLine.get_frame保存图片的问题

Viewed 28

问题描述


我想把PipeLine获取的帧进行一下保存处理,同时进行一下二次的图像处理。
我保存了之后发现,图片是9宫格的灰色图。
我确认一下,PipeLine.get_frame这个函数获取的img本来就是个9宫格的灰度图,还是我的转换方法有问题

复现步骤


img = image.Image(self.width, self.height, image.RGB888,
alloc=image.ALLOC_REF, data=img_np)

img2 = img.to_rgb565()

img2.save(filename)

硬件板卡


01studio

1 Answers

需要实现transpose,将CHW的数据转换成HWC的数据才能保存。参考下面的代码:

from libs.PipeLine import PipeLine
from libs.AI2D import Ai2d
from libs.Utils import *
from media.media import *
import nncase_runtime as nn
import ulab.numpy as np
import gc
import sys,os

if __name__ == "__main__":
    display_mode="lcd"
    out_w=640
    out_h=480

    # 初始化PipeLine,用于图像处理流程
    pl = PipeLine(rgb888p_size=[out_w,out_h], display_mode=display_mode)
    pl.create()  # 创建PipeLine实例
    
    while True:
        with ScopedTiming("total",1):
            img_chw = pl.get_frame()            # 获取当前帧数据
            img_hwc_np = chw2hwc(img_chw)
            img_rgb888 = image.Image(out_w, out_h, image.RGB888, alloc=image.ALLOC_REF,data =img_hwc_np)
            img_rgb565=img_rgb888.to_rgb565()
            img_rgb565.save("/data/save.jpg")
            gc.collect() 
    pl.destroy()