我正在尝试将我的计算机视觉代码与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
2条答案
按热度按时间3mpgtkmj1#
在
fromarray
中指定灰度模式:bvuwiixz2#
删除框中的所有代码并替换为
pil_image = Image.fromarray(np.uint8(frame))
解决了问题。我只需要指定数组中的数据类型。