Как удалить цвета из изображения с помощью скрипта Python

Как удалить цвета из изображения с помощью скрипта Python

Случай довольно распространенный: вы использовали один из многих доступных инструментов для удаления фона с фотографии, но полученный результат оказался несовершенным. К сожалению, вокруг областей, которые сложнее очертить, фон все еще виден, и его присутствие остается очевидным. Есть способ устранить цвета автоматически из изображения, фокусируясь только на тех, которые по тону близки к цвету, указанному во входных данных?

Учитывая, что достичь цели можно с помощью таких приложений, как Photoshop, GIMP, LunaPic и Photopea, могли ли вы когда-нибудь подумать, что сможете удалить нежелательные цвета из фотографии с помощью простого скрипта Python?

Питон Его можно установить на любую платформу, не обязательно на системы Linux. Пользователи Windows, например, могут установить его с помощью официального пакета или, что еще лучше, с помощью ВСЛ (Подсистема Windows для Linux) или возможность запуска Linux в окне, не отказываясь от платформы Microsoft.

Удаление цветов из изображения с помощью простого скрипта Python

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Предполагается, что у вас уже установлен Python и вы можете вызвать менеджер пакетов. пипвам необходимо добавить две важные библиотеки:

pip установить numpy
pip установить opencv-python

Библиотека NumPy используется для обработки массивов и числовых операций, в то время как OpenCV обогащает Python широким спектром инструментов обработки изображений.

Код Python, который мы представляем ниже, использует библиотеку OpenCV для манипулировать изображениями и цвета. Основная цель – выявить и удалить все вариации цвета указан на фото. «Целевой» цвет определяется путем предоставления соответствующего цвета в качестве входных данных. код HTML (HTML-шестнадцатеричный). Это выражение автоматически преобразуется в другое цветовое пространство для использования в последующей обработке.

Чтобы использовать наш код Python, просто скопируйте его в буфер обмена, затем введите nano Remove-colors.py, а затем щелкните правой кнопкой мыши, чтобы вставить его в текстовый редактор.

import cv2 import numpy as np # Укажите цвет с его HTML-кодом # и изображение для обработки: color_hex = '#068AB1' image = cv2.imread('testimage.png', cv2.IMREAD_UNCHANGED) # Преобразование шестнадцатеричного HTML в RGB значения (шестнадцатеричное в десятичное) r = int(color_hex(1:3), 16) g = int(color_hex(3:5), 16) b = int(color_hex(5:7), 16) # Преобразует RGB в BGR (поскольку OpenCV использует BGR) color_bgr = np.uint8((((b, g, r)))) # Преобразует указанный цвет в цветовое пространство HSV color_hsv = cv2.cvtColor(color_bgr, cv2.COLOR_BGR2HSV) hue = color_hsv (0)(0)(0) # Извлечь оттенок (Hue) # Проверить, есть ли у изображения альфа-канал (прозрачность) if image.shape(2) == 4: # Если у него есть альфа-канал, отделить его b , g, r, a = cv2.split(image) img_bgr = cv2.merge((b, g, r)) # Объединить только каналы BGR else: img_bgr = image # Преобразовать изображение в цветовое пространство HSV hsv = cv2.cvtColor( img_bgr, cv2.COLOR_BGR2HSV) # Определить широкий цветовой диапазон для указанного цвета low_bound = np.array((hue – 10, 50, 50)) Upper_bound = np.array((hue + 10, 255, 255)) # Создать маска для захвата всех цветовых вариаций Mask = cv2.inRange(hsv, Lower_bound, Upper_bound) # Удалить все цветовые вариации из изображения result = cv2.bitwise_and(img_bgr, img_bgr, Mask=~mask ) # Если исходное изображение имело альфа канал, добавьте альфа-канал к результату, если image.shape(2) == 4: result = cv2.merge((result, a)) # Сохраняем результат в формате PNG cv2.imwrite('testimage-MOD.png' , результат)

Скрипт Python удаляет цвета из изображения

Как работает скрипт и какие изменения внести

Чтобы использовать скрипт, просто укажите имя обрабатываемого изображения вместо testimage.png (сохраненного в том же каталоге, где находится код Python). Обработанное изображение сохраняется в виде файла testimage-MOD.png: измените имя файла по своему усмотрению.

Однако вместо #068AB1 необходимо указать HTML-код цвета, который нужно удалить. Этот цвет автоматически преобразуется в ваш RGB-компоненты (красный, зеленый, синий). Эти значения затем переставляются в формате БГРиспользуемый OpenCV.

Скрипт преобразует цвет BGR в Цветовое пространство HSV (Оттенок, Насыщенность, Значение), затем извлекаем компонент оттенка (оттенок). Флаг cv2.IMREAD_UNCHANGED гарантирует, что если изображение содержит альфа-канал (прозрачность), что характерно для файлов PNG, оно сохраняется.

Изображение BGR преобразуется в цветовое пространство HSV, чтобы сравнить цвета в зависимости от их тона. Путем последующего определения цветового диапазона сценарий определяет диапазон Из оттенок чтобы уловить все вариации, присутствующие на изображении.

маска (маска) специально созданный, выделяет все области изображения, попадающие в указанный цветовой диапазон. Указанные цвета затем удаляются из изображения. инвертирование маску (~mask) и применение ее к изображению BGR. Если исходное изображение имело альфа-канал, он добавляется обратно к окончательному результату.

Как начать редактирование изображений

После внесения соответствующих изменений (имена файлов и HTML-код цвета, который нужно удалить) вы можете нажать CTRL+O, чтобы сохранить скрипт Python в редакторе nano, а затем CTRL+X, чтобы выйти.

На данный момент все готово для проведения теста: вот и все. скопировать изображение в папке сценария remove-colors.py, затем вызовите следующую команду:

python3 rimuovi-colori.py

После завершения обработки полученное изображение будет найдено в том же каталоге. Если вы используете WSL в Windows, вы можете нажать Windows+R, ввести \\WSL$, выбрать установленный дистрибутив Linux, затем свою домашнюю папку, а затем свое имя пользователя.

Удаление цветов с фотографий

Как вы можете видеть на изображении в качестве примера, отличное веб-приложение для удаления фона оставило часть фон синий изначально присутствует(исходное изображение на Unsplash) в волосах модели. Указав HTML-код #068AB1 (голубой) в качестве входных данных и запустив сценарий Python, полученное изображение показано справа. Лучше, да?

При желании вы можете улучшить сценарий, заставив его обрабатывать имя обрабатываемого изображения, имя выходного изображения и HTML-код в качестве аргументов, передаваемых из командной строки.

Вступительное изображение предоставлено: iStock.com – Городенкофф

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *