我有一个来源的图像流,不幸的是,它是RGB值元组列表。我想对图像执行实时处理,但该代码需要一个形状(X,Y,3(的Numpy数组,其中X和Y是图像的高度和宽度。
X = [[(R, G, B)...]]
img_arr = np.array([*X])
上面的效果很好,但我的图像需要将近四分之一秒,这显然太慢了。有趣的是,在处理完成后,我还需要回到另一个方向,并且代码(似乎可以工作(并不那么慢:
imgout = map(tuple, flipped_image)
其他一些相关问题:
为什么将一个长的2D列表转换为numpy数组如此缓慢?
将元组列表转换为二维Numpy阵列
要回答问题的标题,numpy会自动将和元组列到numpy数组中,因此您只需使用np.array(X)
,它将与您所能获得的速度一样快:
img_arr = np.array(X)
一个简单的列表理解将把它转换回列表-列表元组形式:
imgout = [[tuple(Z) for Z in Y] for Y in img_arr]
生成示例10x10X
阵列的代码:
X = [[tuple(Z) for Z in Y] for Y in np.random.randint(0,255,(10,10,3))]