Время прочтения: 2 мин.
Что делать если вы нашли идеальный логотип или изображение для презентации, но у нее есть задний белый фон. Обрезать фон с помощью Photoshop? Долго! С помощью MS PowerPoint? Неэффективно. К примеру, встроенная в MS PowerPoint функция удаления фона вместо фона на изображении удалила зеленые значки.
Для этого вам может помочь Python и Computer Vision. Для примера возьмем схему обработки данных виртуальным ассистентом Салют. Схема сложная, и вырезать фон «вручную», практически, невозможно. При вставке изображения в презентацию с цветным фоном нарушается стилистика презентации. Ниже я опишу, как вырезать фон и навести красоту. Для начала импортируем необходимые модули, и считываем обрабатываемое изображение.
import cv2
import numpy as np
img = cv2.imread('my_image.png')
Производим настройку модуля и задаем необходимые для получения результата переменные.
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
mask = cv2.threshold(gray, 250, 255, cv2.THRESH_BINARY)[1]
mask = 255 - mask
Применяем функции MORPH для удаления ненужного слоя.
kernel = np.ones((3,3), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
mask = cv2.GaussianBlur(mask, (0,0), sigmaX=2, sigmaY=2,
borderType=cv2.BORDER_DEFAULT)
mask = (2*(mask.astype(np.float32))-255.0).clip(0,255).astype(np.uint8)
Копируем наше изображение и вырезаем фон.
result = img.copy()
result = cv2.cvtColor(result, cv2.COLOR_BGR2BGRA)
result[:, :, 3] = mask
Сохраняем полученный результат в файл.
cv2.imwrite('my_image_without_bckgrnd.png', result)
Таким образом Computer Vision помогает нам обрезать задний белый фон и теперь изображение можно использовать, к примеру, для добавления его в презентацию с цветным фоном слайдов.
P.S.: Для улучшения качества вырезки белого фона рекомендуется увеличить расширение изображения с сохранением пропорций.