我正在评估开放式简历视频帧上的Tensorflow模型。我需要将传入的PIL图像重塑为重塑的numpy数组,以便可以对其进行推断。 但是我看到在配备16 GiB内存和2.6 GHz Intel Core i7处理器的笔记本电脑上,PIL图像到numpy数组的转换大约需要900毫秒以上。我需要将其降低到几毫秒,这样我才能在相机上每秒处理多个帧。
有人可以建议如何使以下方法更快地运行吗?
def load_image_into_numpy_array(pil_image):
(im_width, im_height) = pil_image.size
data = pil_image.getdata()
data_array = np.array(data)
return data_array.reshape((im_height, im_width, 3)).astype(np.uint8)
在进一步的测试中,我意识到np.array(data)
花费了大部分时间……接近900毫秒。因此,将图像数据转换为numpy数组才是真正的罪魁祸首。
答案 0 :(得分:1)
您可以让numpy处理转换,而不必重塑自己。
def pil_image_to_numpy_array(pil_image):
return np.asarray(pil_image)
您正在将图像转换为(高度,宽度,通道)格式。那是默认的numpy.asarray函数对PIL图像执行的转换,因此不必进行显式重塑。