Всем привет!! Как дела? Надеюсь, у вас все все хорошо. Давайте перейдем прямо в тему. В этом блоге я собираюсь поговорить о модификации изображений в Python, используя библиотеку SimpleImage.
Мы все знаем, что изображения изготовлены из квадратных пикселей. Каждый пиксель имеет (x, y) координаты на изображении. Происхождение (0,0) находится в верхнем левом углу. У увеличения идет вниз, х увеличивается идет вверх.
Каждый пиксель имеет один цвет, закодированный как значения RGB. Каждое значение представляет яркость для этого цвета. Каждое значение RGB варьируется от 0 до 255. Мы можем установить значения RGB, чтобы сделать любой цвет.
Если RGB = (255,255,255), то он белый в цвете. Если это (0,0,0), то во всех трех цветах отсутствует свет. Итак, это черный цвет.
Установка подушки
Подушка – это версия библиотеки визуализации Python (Pil). В этой библиотеке мы используем SimpleImage для изменения наших изображений.
Для Windows:
py -m pip install Pillow
Для Mac:
python3 -m pip install Pillow
Используя простую библиотеку изображений
Чтобы использовать любую библиотеку в Python, мы должны импортировать его. И мы должны включить его в верхнюю часть нашего файла программы.
from simpleimage import SimpleImage
Функции в PeryImage Library
A. Создайте объект SimpleImage, прочитав изображение из файла (JPG, PNG, GIF и т. Д.) И хранить его в переменной.
my_image = SimpleImage(filename)
B. Показать изображение на вашем компьютере
my_image.show
Мы можем манипулировать изображением, изменив его пиксели. Мы также можем создавать новые пиксели и установить их пиксели.
Доступ к пикселям на изображении:
Мы используем новый вид петли, называемый для каждого цикла.
for-each loop in image: image = SimpleImage("flower.png") for pixel in image: #Do something
Свойства изображений и пикселей:
- Каждое простое значение имеет свойства, которые вы можете получить доступ. Они являются image.width, image.hight.
- Каждый пиксель на изображении имеет свойства. pixel.x, pixel.y, pixel.red, pixel.blue, pixel.green.
- Высшие значения R, G, B означают больше цвета в пикселе.
- Пиксели смеются.
- Мы можем установить значения Pixel RGB в изображении, чтобы изменить его.
Давайте решим некоторые примеры из концепций, которые мы узнали.
А. Делать образ темнее
Здесь все цвета изображений стоят, как они есть, но уменьшаются по некоторым пикселям. (Свет падения на изображениях уменьшен).
def darker(image): for pixel in image: pixel.red = pixel.red // 2 pixel.green = pixel.green // 2 pixel.blue = pixel.blue // 2 def main(): flower = SimpleImage('flower.png') darker(flower) flower.show()
Исходное изображение: выходное изображение:
B. Извлечение красного канала из изображения
Все цвета, кроме красных, уменьшены до нуля. Итак, нет света, кроме красного на изображении.
def red_channel(filename): img = SimpleImage(filename) for px in image: px.red = pix.red // 2 px.green = 0 px.blue = 0 return img
Выходное изображение:
C. Greyscale.
Вычисляет яркость пикселя, используя формулу NTSC, чтобы взвесить красные, зеленые и синие значения соответствующим образом.
def compute_luminosity(red, green, blue): return (0.299 * red) + (0.587 * green) + (0.114 * blue) def grayscale(filename): image = SimpleImage(filename) for pixel in image: luminosity = compute_luminosity(pixel.red, pixel.green, pixel.blue) pixel.red = luminosity pixel.green = luminosity pixel.blue = luminosity return image
Выходное изображение:
D. Зеленый скрининг
У нас должно быть изображение с областями, которые являются достаточно зелеными. И тогда мы заменяем эти зеленые пиксели с соответствующими (X, Y) расположения другого изображения.
Хотя он называется зеленым скринингом, мы можем просто изменить любой цвет таким же образом.
from simpleimage import SimpleImage INTENSITY_THRESHOLD = 1.6 def redscreen(main_filename, back_filename): image = SimpleImage(main_filename) back = SimpleImage(back_filename) for pixel in image: average = (pixel.red + pixel.green + pixel.blue) // 3 if pixel.red >= average * INTENSITY_THRESHOLD: x = pixel.x y = pixel.y image.set_pixel(x, y, back.get_pixel(x, y)) return image def main(): original_stop = SimpleImage('stop.png') original_stop.show() original_leaves = SimpleImage('leaves.png') original_leaves.show() stop_leaves_replaced = redscreen('stop.png', 'leaves.png') stop_leaves_replaced.show() if __name__ == ' __main__': main()
Входное изображение 1: Входное изображение 2: Выходное изображение:
Это обертывание. Надеюсь, вам понравился этот блог.
Оригинал: “https://dev.to/bharadwaj6262/image-modification-using-simpleimage-library-fcp”