2015-02-26 4 views
0

Я пытаюсь запустить этот код на Python, чтобы прочитать изображение и преобразовать его в матрицу данных, но я столкнулся с ошибкой выше, и я надеюсь, что вы можете помочь мне разобраться в том, что собираемся одинОшибка: слишком много значений для распаковки

from PIL import Image 
from numpy import array 
import numpy as np 



img = Image.open('felix.png') 
arr = array(img) 

im = Image.open("felix.png") 
col,row = im.size 
data = np.zeros((row*col, 5)) 
pixels = im.load() 
for i in range(row): 
    for j in range(col): 
     r,g,b = pixels[i,j] 
     data[i*col + j,:] = r,g,b,i,j 




print (data) 

ошибка, ошибка значения: слишком много значений для распаковки по этой линии: R, G, B = пиксели [I, J]

Благодаря аа много

ответ

4

Это ошибка означает, что каждый пиксель содержит больше трех значений, для которых вы указали переменные. Разумно предположить, что на самом деле это RGBA-пиксели.

r,g,b,a = pixels[i,j] 

Это не будет иметь место для каждого файла PNG, вы открываете, так что вы должны быть в состоянии справиться с этой ситуацией динамически.

+0

спасибо большое, Можете ли вы подробно рассказать и помогите мне, что вы имеете в виду, Потому что я совершенно новичок в python, и мне просто нужно найти цвета каждого пикселя и его местоположение x, y. – ali

+0

@ali PNG-файл может быть одним из трех разных форматов пикселей. Он может быть палит, что означает, что каждый пиксель имеет только одно значение, и вы должны использовать его как индекс в палитре, чтобы получить истинный цвет. Это может быть RGB, что означает, что каждый пиксель имеет 3 значения, по одному для красного, зеленого и синего. Или это может быть RGBA с 4 значениями на пиксель, первые 3 являются такими же, как RGB, а четвертый - индикатором того, насколько прозрачным должен быть пиксель, 0 для полностью прозрачного или 255 для полностью непрозрачного. –

Смежные вопросы