Ошибка типа: только массивы размера 1 преобразуются в Python скаляры при попытке перебрать пиксели - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь перебрать пиксели изображения и получить их значения 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: только массивы размера 1 могут быть преобразованы в Python скаляры на этой линии

color = int(frame[x, y])

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Вы должны использовать 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)
0 голосов
/ 19 марта 2020

Проблема с тем, что вы делаете, заключается в том, что вы пытаетесь преобразовать фрейм в int, что невозможно. Я бы порекомендовал использовать подушку вместо cv2. Вы можете использовать Подушка , чтобы получить значение RGB данного пикселя в изображении. Он прост в использовании и поддерживает Python 3.8.

...