2015-09-15 4 views
2

У меня маленькое серое изображение. Мне нужно создать много цветных копий этого изображения (желтый, зеленый, ...).Как изменить цвет изображения с помощью Python?

Мне не нужно заменять один цвет. В моем исходном изображении много оттенков серого, и мне нужно создавать изображения со многими оттенками других цветов.

Как это сделать, используя Python?

+0

Вы можете попробовать 'PIL' или' Pillow' (дружественный модуль 'PIL'). Вот документ: https://pillow.readthedocs.org/ –

+0

добавьте дополнительную информацию. –

ответ

1

Это может быть излишним, но вы можете легко использовать функциональные возможности из библиотеки OpenCV (привязки python), чтобы оттенять ваши изображения с серой шкалой в цвете.

Попробуйте взглянуть на этих людей код C++: http://answers.opencv.org/question/50781/false-coloring-of-grayscale-image/. Аналоги с функциями, которые они используют, вероятно, существуют в библиотеке python.

Вот рекомендуемый курс действий:

  1. Преобразовать изображение в BGR (OpenCV конвенция список красный зеленый синий в обратном порядке) с оттенками серого, используя cv2.cvtColor()
  2. Нанести искусственный цвет карта вашего выбора (cv2.applyColorMap()) см: http://docs.opencv.org/modules/contrib/doc/facerec/colormaps.html
3

я наткнулся на статью сегодня на Hacker News, что показывает, как смешайте изображение с постоянным базовым цветом с помощью affine transform. Статья Making thumbnails fast от William Chargin и его улучшение производительности обработки изображений. Исходный код, упомянутый в нем, находится в affine transforms on PIL images.

Это демонстрационный ролик, снятый в оттенках серого. Lena. Image resized to 231x231 pixels. Это изображение было выбрано потому, что его «стандартное тестовое изображение, широко используемое в области обработки изображений с 1973 года».

from PIL import Image 
from transforms import RGBTransform # from source code mentioned above 

lena = Image.open("lena.png") 
lena = lena.convert('RGB') # ensure image has 3 channels 
lena 

starting image

red = RGBTransform().mix_with((255, 0, 0),factor=.30).applied_to(lena)  
red 

red tinted image

green = RGBTransform().mix_with((0, 255, 0),factor=.30).applied_to(lena) 
green 

green tinted image

blue = RGBTransform().mix_with((0, 0, 255),factor=.30).applied_to(lena) 
blue 

blue tinted image

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