在 Python 中索引 NumPy 图像数组时出错

Error indexing a NumPy image array in Python

我使用 Python 2.7、Numpy 和 OpenCV 编写了一个程序来从我的网络摄像头抓取一张照片并给出每个像素的 rgb 值。在 运行 640x480 像素照片上的代码之后:

for x in range(638):
    for y in range(478):
        red, green, blue = image[x, y]
        print(red, green, blue)

我收到错误消息:

red, green, blue = image[x, y]
IndexError: index 480 is out of bounds for axis 0 with size 480

有人知道这是为什么吗?

简短的回答是 640 x 480 图像的形状 (480, 640, n_channels)。如果将代码更改为 image[y, x],则不会出现此错误。如果将代码写成这样可能更容易理解:

for row in range(image.shape[0]):
    for col in range(image.shape[1]):
      r, g, b = image[row, col]

这里有一个关于 indexing image data 的教程,它向您展示了如何高效地执行一些操作,并提供了一些关于索引约定的详细信息。