Преобразование цветового пространства изображения в RGB в Python

Я работаю над скриптом обработки изображений (Python с библиотекой PIL), и мне нужно преобразовать цветовое пространство любого изображения в RGB. Я пробовал этот трюк, но он работает только с png изображениями в RGBa цветовом пространстве:

image = Image.open(imageFile)
image.load()

# replace alpha channel with white color
self.im = Image.new('RGB', image.size, (255, 255, 255))
self.im.paste(image, mask=image.split()[3])

Как сделать этот код универсальным для всех изображений в любом цветовом пространстве?

Спасибо.


person Roman Nazarkin    schedule 11.04.2013    source источник


Ответы (2)


Найдено решение:

image = Image.open(imageFile)
image.load()

# replace alpha channel with white color
self.im = Image.new('RGB', image.size, (255, 255, 255))
self.im.paste(image, None)

в переменной self.im будет храниться изображение в цветовом пространстве RGB с белым (255, 255, 255) альфа-каналом.

person Roman Nazarkin    schedule 12.04.2013

Вы хотите использовать только PIL? Я бы предложил привязки Python версии 2 для openCV cv2

http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#cv2.cvtColor

Он имеет множество возможных преобразований между наиболее распространенными цветовыми пространствами.

Если вы не хотите openCV, вы можете использовать skimage

http://scikit-image.org/docs/dev/api/skimage.color.html#convert-colorspace

person entropiece    schedule 11.04.2013
comment
Вы случайно не знаете, подходит ли skimage xyz2rgb( lab2xyz( lab )) для lab вне гаммы ? - person denis; 11.06.2013