TypeError: only size-1 arrays are converted to Python scalars when trying to iterate through pixels

TypeError: only size-1 arrays are converted to Python scalars when trying to iterate through pixels

我正在尝试遍历图像中的像素并获取它们的 R、G、B 值。

import cv2

frame = cv2.imread('image.jpg')
height, width, c = frame.shape

for x in range(width):
    for y in range(height):
        color = int(frame[x, y])
        print(color)

但我收到 TypeError: only size-1 arrays can be converted to Python scalars, on this line

color = int(frame[x, y])

您正在做的事情的问题是您试图将一个帧转换为一个 int,这是不可能的。我建议使用 Pillow 而不是 cv2。您可以使用 Pillow 获取图像中给定像素的 RGB 值。简单易用,支持Python 3.8.

您应该使用 color = (frame[x, y,:]) 以便获得 3 个坐标。

[编辑]

这实际上对我有效,同时投射到 int:

for x in range(width):
    for y in range(height):
        color_raw = (frame[x, y,:])
        color = list(map(int, color_raw))
        print(color)