Как получить матрицу, состоящую из массивов пикселей и RGB? - PullRequest
0 голосов
/ 05 мая 2019

Я пытался использовать библиотеку PIL, чтобы получить матрицу, состоящую из массивов пикселей и RGB, однако я получаю только одномерный массив и не понимаю, как сформировать их матрицу

img = Image.open("E:\\1f9114.png").convert('RGB')
obj = img.load()
width, height = img.size 
for j in range(height):        
    for i in range(width):             
        matrix1=[i,j,obj[i,j]]            
        print(matrix1)           
    print()

Я знаю, что матрица может получиться огромной, а обычный лист не справляется. Надеюсь, кто-нибудь поможет, так как для меня это важно.

1 Ответ

0 голосов
/ 05 мая 2019

С этим фрагментом кода связано несколько проблем:

  • matrix1 всегда отменяется. Если вы хотите добавить пиксели в существующий список, используйте list.append().
  • im.getdata() следует использовать для получения одномерного необработанного списка пикселей из изображения.

Вот пример (адаптированный с здесь ) для загрузки пикселей в двумерный массив, который содержит (r, g, b) кортежи, построенные с использованием списочных представлений и срезов.

pixels = list(img.getdata())
matrix1 = [pixels[i*width:(i+1)*width] for i in range(height)]
...