2016-07-22 2 views
1

Итак, я использовал opencv2 и PIL для получения значений пикселей. Они сохраняются как таковыеPython 2.7- как сохранить изображение через кортеж или установить значения?

(0, 0, 0), (1, 1, 1)

Я попытался как 7 различных способов использовать эти данные для создания изображения.

Моя самая большая проблема: я не могу заставить putdata работать с моим кортежем.

Я бы показал код, но мой ноутбук плоский, и мой код сломан в любом случае.

Tldr: как сохранить изображение с помощью PIL с использованием значений пикселей, хранящихся в кортеже?

ответ

0

Что-то, как это должно работать

from PIL import Image 

W = 200 
H = 200 
img = Image.new("RGB", (W, H)) 

pixel_list = [(i%256,i%256,i%256) for i in range(W*H)] 
i_pixel = 0 
for x in range(W): 
    for y in range(H): 
     img.putpixel((x, y), pixel_list[i_pixel]) 
     i_pixel += 1 

img.save('result.png') 

следующий результат

Result of the code above

Примечание: Я прочитал here следующее:

В 1.1.6, выше, лучше в письменном виде:

pix = im.load() 
for i in range(n): 
    ... 
    pix[x, y] = value 

Но я не мог заставить это работать.

+0

Итак, где я могу поместить свой кортеж/набор? (его называют z_set). Заменить I_pixel на z_Set? –

+0

'pixel_list' - это список кортежей с пикселями. Я думаю, для вас это называется 'z_Set', поэтому вы используете' z_Set [i_pixel] '. – physicalattraction

+0

Это не сработало для меня. То, что работало [img.putpixel ((index, 0), value) для индекса, значение в перечислении (z_set) –