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)
我正在尝试遍历图像中的像素并获取它们的 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)