Удаляем фон изображения с помощью Computer Vision

Что делать, если вы нашли идеальный логотип или изображение для презентации, но у нее есть задний белый фон. Обрезать фон с помощью Photoshop? Долго! С помощью MS PowerPoint? Неэффективно. К примеру, встроенная в MS PowerPoint функция удаления фона вместо фона на изображении удалила зеленые значки.

Удаляем фон изображения с помощью Computer Vision

Для этого вам может помочь 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

Таким образом, Computer Vision помогает нам обрезать задний белый фон и теперь изображение можно использовать, к примеру, для добавления его в презентацию с цветным фоном слайдов.

P.S.: Для улучшения качества вырезки белого фона рекомендуется увеличить расширение изображения с сохранением пропорций.

22
10 комментариев

Комментарий недоступен

1
Ответить

paint.net бесплатный

1
Ответить

А бело-серые кубики оно вырезает?

Ответить
Автор

Нет. Алгоритм удаляет только чистый белый фон.

Ответить

В фотошопе качественнее, особенно если через выбор цвета делать.

Ответить

через Paint.Net. Через фотошоп долго потому что долго открывается?

Ответить

На м1 секунды полторы

Ответить