当我尝试运行这段代码时,我会遇到异常情况。我尝试过很多东西。我知道我正在尝试将序列分配给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值,有些是列表。
任何解决方案都将非常感激。我是新手。
提前致谢!!
答案 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