Время прочтения: 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.: Для улучшения качества вырезки белого фона рекомендуется увеличить расширение изображения с сохранением пропорций.