首页 > 解决方案 > ValueError:使用序列设置数组元素

问题描述

当我尝试运行这段代码时,我遇到了以下异常。我已经尝试了很多东西。我知道我正在尝试将一个序列分配给 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 是我的带有时间戳的字典值,一些多边形是一个列表。

任何解决方案将不胜感激。我是新来的 。

提前致谢!!

标签: pythonnumpyopencv

解决方案


不适合矩阵的错误点,np.array([255,0,0])因为它不是要插入 shape 矩阵的预期值(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

推荐阅读