ValueError:使用序列设置数组元素

时间:2018-05-24 03:39:08

标签: python numpy opencv

当我尝试运行这段代码时,我会遇到异常情况。我尝试过很多东西。我知道我正在尝试将序列分配给numpy数组单值。

  grid = np.zeros((401, 401))
        for timestamps,poly in sorted(left_camera.iteritems()):
            polygonal = left_camera[timestamps]
            for i in range(0,len(polygonal)):
                if len(polygonal)>0:
                    row = np.int32(polygonal[i][0] * -10 + 200)
                    coloumn = np.int32(polygonal[i][1] * -10 + 200)
                    grid[row,coloumn] = np.array([255,0,0])
        cv2.imshow("image_name", grid)
        cv2.waitKey(0)

异常我来到这里:

grid[row,coloumn] = np.array([255,0,0])
  

ValueError:使用序列设置数组元素。

这里left_camera是带有时间戳的dict值,有些是列表。

任何解决方案都将非常感激。我是新手。

提前致谢!!

1 个答案:

答案 0 :(得分:0)

np.array([255,0,0])不能适合矩阵的错误点,因为它不是要插入形状(401, 401)矩阵的预期值。当您创建matrix = np.zeros((401, 401))时,它会创建一个高度为401且宽度为401的矩阵。由于它没有第三个维度,因此您只能将此矩阵中的单个整数替换为:

grid = np.zeros((401, 401))
grid[10, 10] = 20      # Works perfectly fine
grid[10, 10] = np.array([10, 20, 20])   # Raises Error

要解决此问题,您需要在创建矩阵时传递第三个维度:

grid = np.zeros((401, 401, 3))
grid[10, 10] = np.array([10, 20, 20])   # Works perfectly fine