Отображение перемеженного изображения в python [duplicate]

Встроенный zip делает именно то, что вы хотите. Если вы хотите использовать те же самые итерации вместо списков, вы можете посмотреть на itertools.izip, который делает то же самое, но дает результаты по одному.

27
задан Ishan Tomar 4 May 2012 в 08:47
поделиться

4 ответа

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

# r, g, and b are 512x512 float arrays with values >= 0 and < 1.
from PIL import Image
import numpy as np
rgbArray = np.zeros((512,512,3), 'uint8')
rgbArray[..., 0] = r*256
rgbArray[..., 1] = g*256
rgbArray[..., 2] = b*256
img = Image.fromarray(rgbArray)
img.save('myimg.jpeg')

Надеюсь, что это поможет

37
ответ дан Bi Rico 27 August 2018 в 03:03
поделиться
rgb = np.dstack((r,g,b))  # stacks 3 h x w arrays -> h x w x 3

Также конвертировать поплавки 0 .. 1 в uint8 s,

rgb_uint8 = (np.dstack((r,g,b)) * 255.999) .astype(np.uint8)  # right, Janna, not 256
34
ответ дан denis 27 August 2018 в 03:03
поделиться

Преобразуйте массивы numpy в uint8, прежде чем передавать их в Image.fromarray

Например. если вы плаваете в диапазоне [0..1]:

r = Image.fromarray(numpy.uint8(r_array*255.999))
3
ответ дан Janne Karila 27 August 2018 в 03:03
поделиться

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

`
image=Image.open("your image")

print(image.size) #size is inverted i.e columns first rows second eg: 500,250

#convert to array
li_r=list(image.getdata(band=0))
arr_r=np.array(li_r,dtype="uint8")
li_g=list(image.getdata(band=1))
arr_g=np.array(li_g,dtype="uint8")
li_b=list(image.getdata(band=2))
arr_b=np.array(li_b,dtype="uint8")

# reshape 
reshaper=arr_r.reshape(250,500) #size flipped so it reshapes correctly
reshapeb=arr_b.reshape(250,500)
reshapeg=arr_g.reshape(250,500)

imr=Image.fromarray(reshaper,mode=None) # mode I
imb=Image.fromarray(reshapeb,mode=None)
img=Image.fromarray(reshapeg,mode=None)

#merge
merged=Image.merge("RGB",(imr,img,imb))
merged.show()
`

это хорошо работает!

1
ответ дан John Misquita 27 August 2018 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: