ValueError:无法将形状(256,340,3)的输入数组广播为形状(256,340,30)

时间:2016-12-07 19:00:38

标签: python numpy pycaffe numpy-broadcasting

我试图在python中保存10个rgb图像的堆栈,但是我收到以下错误:

rgb[:,:,:, i] = img
ValueError: could not broadcast input array from shape (256,340,3) into shape (256,340,30) 

我试过了:

img = cv2.imread(img_file, cv2.IMREAD_UNCHANGED)
rgb[:,:,:, i] = img

我也尝试过:

chunks = 10
step = int(math.floor((duration - chunks + 1)/(num_samples)))
dims = (256, 340, chunks * 3, num_samples)
rgb = np.zeros(shape=dims, dtype=np.float64)
   for i in range(num_samples):
    for j in range(chunks):
         img_file = os.path.join(vid_name, 'image_{0:04d}.jpg'.format(i*step+j+1 + start_frame))
         img = cv2.imread(img_file, cv2.IMREAD_UNCHANGED)
         img = cv2.resize(img, dims[1::-1])
         rgb[:,:,(j+1)*3, i] = img

img_file保留图像的路径,使其正确。我用

进行了测试
print("%r") % img_file

我想要的是10张堆叠的rgb图像。

感谢任何帮助。 谢谢!

1 个答案:

答案 0 :(得分:1)

方法#1:为了简单起见,我建议初始化一个nopool数组,而不是将第二个最后一个轴分成两个轴,保持5D和{{ 1}}沿着他们,就像这样 -

chunks

为了补偿这种编辑,我们需要将图像的一部分分配到嵌套循环内的输出数组中,如下所示 -

3

执行所有这些操作后,如果需要,最后只需重塑为dims = (256, 340, chunks , 3, num_samples) 数组 -

rgb[:,:,j, :, i] = img

所以,需要进行所有三次编辑。

方法#2:保持循环代码不受问题影响,我们可以这样做 -

4D