Идентификатор значения пиксельного RGB-значения - TypeError: аргумент должен быть последовательностью длиной 2 - PullRequest
0 голосов
/ 06 августа 2020

У меня были проблемы с PIL, и я пытался заставить мою программу печатать rgb-значение пикселя.

Код :

import PIL

try:
    import Image
except ImportError:
    from PIL import Image

###
    
filename = input ('Picture Filename - ')

image = PIL.Image.open(filename)

image.show()

width, height = image.size

image_rgb = image.convert('RGB')

w = 1
h = 1

a = 1
b = 2
while a < b:
    while (w <= width):
        rgb_pixel_value_1 = int(image_rgb.getpixel(w))
        rgb_pixel_value_2 = int(image_rgb.getpixel(h))
        print(rgb_pixel_value_1)
        print(rgb_pixel_value_2)
        w += 1
    if w == width and h < height:
        h += 1
    if h == height:
        a = 3

Предполагаемый результат: программа должна распечатать значение каждого пикселя от [1, 1] до [высота, ширина]

Фактический результат:

Traceback (most recent call last):
  File "I:/Programming/Python/Useful Projects/Image Colour Space Checker/Revision 1.py", line 27, in <module>
    rgb_pixel_value_1 = int(image_rgb.getpixel(w))
  File "C:\Users\rdmor\AppData\Roaming\Python\Python38\site-packages\PIL\Image.py", line 1367, in getpixel
    return self.im.getpixel(xy)
TypeError: argument must be sequence of length 2

То, что я пробовал: у меня очень мало пробовал, так как на inte rnet по этой теме так мало, и что-либо связанное с этим было в лучшем случае умеренно полезным

Вероятно, есть другие ошибки, даже незначительные, которых у меня нет заметил еще

1 Ответ

0 голосов
/ 06 августа 2020

При получении пикселей из указанных x и y, getpixel ожидает передачи последовательности длиной два. В вашем коде у вас есть

rgb_pixel_value_1 = int(image_rgb.getpixel(w))

, чтобы получить значения rgb из указанной позиции, которая вам нужна

r, g, b = image_rgb.getpixel((w, h))
...