Удаление фона с фотографий — важная задача в обработке изображений, которая находит применение в различных областях, таких как электронная коммерция, дизайн и создание контента. В этой статье мы рассмотрим, как удалить фон с фото, используя Python и библиотеку rembg.
pip install rembg Pillow numpy
from PIL import Image
import numpy as np
import os
def remove_bg(image_path, threshold=240):
image = Image.open(image_path).convert("RGBA")
data = np.array(image)
# Создание маски на основе порогового значения
mask = (data[:, :, :3].sum(axis=2) > threshold * 3)
# Установка альфа-канала
data[mask, 3] = 0
# Создание и сохранение результата
result_image = Image.fromarray(data, mode="RGBA")
filename, file_extension = os.path.splitext(image_path)
result_image.save(filename + '.png')
# Пример использования функции
remove_bg('image.jpg', 235)
Этот скрипт выполняет следующие шаги:
py remove_bg.py
После выполнения скрипта в текущей директории появится файл output.png с удаленным фоном.
import cv2, os
from PIL import Image
# pip install opencv-python pillow
image_file = 'signature.jpg'
image = cv2.imread(image_file) # Загружаем изображение
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Преобразуем изображение в оттенки серого
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # Применяем бинаризацию с адаптивным порогом
mask = binary.copy() # Создаем маску для прозрачного фона
# Преобразуем изображение и маску в формат PIL
image_pil = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
mask_pil = Image.fromarray(mask)
image_pil.putalpha(mask_pil) # Создаем альфа-канал на основе маски
filename, file_extension = os.path.splitext(image_file)
image_pil.save(filename + '.png') # Сохраняем результат
*текст*
- жирный,
~текст~
- курсивный,
-текст-
- _текст_
- подчеркнутый