Рубрики
Без рубрики

Модификация изображения с использованием библиотеки SimpleImage!

Всем привет!! Как дела? Надеюсь, у вас все все хорошо. Давайте перейдем прямо в тему. В этом … Помечено с Python, ImageProcessing, PythonProjects, 100Дасофкодом.

Всем привет!! Как дела? Надеюсь, у вас все все хорошо. Давайте перейдем прямо в тему. В этом блоге я собираюсь поговорить о модификации изображений в 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”