numpy 如何将np.uint8转换为PIL.Image可用的格式?

ecr0jaav  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(207)

我正在尝试将我的计算机视觉代码与DepthAI的现有代码(这是实际上从相机中检索每一帧的代码)结合起来,以便分析深度图图像以确定障碍物。我遇到的问题是,DepthAI代码中的每一帧视频似乎都是‘np.uint8’的形式。我的计算机视觉代码使用PIL.Image,我之前只使用.png图像对其进行了测试。现在我正在将代码集成在一起,我似乎无法让DepthAI检索到的帧与PIL.Image函数一起工作。#中的代码试图将np.uint8数组重塑为通用的图像分辨率(1024x750),但输出图像毫无意义。我只想分析色彩Map表图像,这样我就可以通过这门课并毕业:(有人知道如何从np.uint8转换为与Image兼容的格式吗?

import cv2
import depthai as dai
import numpy as np
from PIL import Image

    q = device.getOutputQueue(name="disparity", maxSize=4, blocking=False)

    while True:
        inDisparity = q.get()  # blocking call, will wait until a new data has arrived
        frame = inDisparity.getFrame()
        # Normalization for better visualization
        frame = (frame * (255 / depth.initialConfig.getMaxDisparity())).astype(np.uint8) #this is where the frame is made into np.uint8

        cv2.imshow("disparity", frame)                  # the resulting images from disparity look correct

        frame = cv2.applyColorMap(frame, cv2.COLORMAP_JET)
        cv2.imshow("disparity_color", frame).       # the resulting image from the colormap looks correct

        #now trying to get the frame to work with PIL.Image
 #####################################################
        reshapedFrame = np.reshape(frame, (750,1024))#
        im = Image.fromarray(reshapedFrame)          #  
        im.show()                                    #

###################################################### 

        if cv2.waitKey(1) == ord('q'):
            break

3mpgtkmj

3mpgtkmj1#

fromarray中指定灰度模式:

im = Image.fromarray(reshapedFrame, 'L')
bvuwiixz

bvuwiixz2#

删除框中的所有代码并替换为pil_image = Image.fromarray(np.uint8(frame))解决了问题。我只需要指定数组中的数据类型。

相关问题