Друкарня від WE.UA

Всіх вітаю! У цій статті ми познайомимося з бібліотекою rembg, яка здатна видаляти фон з фотографій за допомогою ШІ. Хоч бібліотека невеличка, але точно є корисною для використання у деяких ситуаціях.

Встановлення rembg

Windows:

pip install rembg

MacOS:

pip3 install rembg

Linux:

pip install rembg

Також перед початком роботи із rembg треба обов’язково встановити бібліотеку onnxruntime, так як вона не встановлюється автоматично. Бібліотека onnxruntime по суті запускає штучний інтелект у rembg, який потрібен для виявлення фону.

Команди для встановлення onnxruntime є нижче.

Windows:

pip install onnxruntime

MacOS:

pip3 install onnxruntime

Linux:

pip install onnxruntime

Тепер наш код точно буде працювати.

Використання rembg

Перший приклад

Для початку імпортуємо дві бібліотеки — rembg та pillow. Бібліотеку pillow ми використовуємо тому, що вона дозволить нам відкривати і зберігати зображення.

Імпортуємо:

import rembg as rb
from PIL import Image

Для першого прикладу оберемо це зображення:

,Photo by Atul Pandey on Unsplash

Створюємо функцію, яка буде видаляти фон:

def remove_photo_background(original, edited):
    original_photo = Image.open(original)
    edited_photo = rb.remove(original_photo)
    edited_photo.save(edited)

    print(f"Image {original} successfully edited!")


remove_photo_background("atul-pandey-aMtO0ubeK_4-unsplash.jpg", "without_background_1.png")

Ця функція приймає два параметри original та edited — назва старого й нового фото, причому нове фото повинно бути у форматі png.

Далі відкриваємо зображення, з яким будемо працювати за допомогою pillow:

original_photo = Image.open(original)

Функція remove() у rembg дозволяє нам видаляти фон зображень:

edited_photo = rb.remove(original_photo)

Зберігаємо зображення без фону з новою назвою:

edited_photo.save(edited)

Ось результат:

Фото без фону

Другий приклад

Тепер оберемо іншу картинку:

Photo by Aidan Lynch on Unsplash

Насправді можна і не використовувати pillow разом з rembg — це лиш один з варіантів як можна робити. У наступному прикладі ми також видалимо фон, але без якихось інших сторонніх бібліотек, окрім rembg.

Ось так ми переробили функцію — тепер вона відкриває файли без допомоги pillow. Ось код даної функіції:

def remove_photo_background(original, edited):
    original_photo = open(original, "rb")
    read_original = original_photo.read()
    remove_background = rb.remove(read_original)

    edited_photo = open(edited, "wb")
    edited_photo.write(remove_background)

    original_photo.close()
    edited_photo.close()

    print(f"Image {original} successfully edited!")


remove_photo_background("aidan-lynch--ynAkBMFupU-unsplash.jpg", "without_background_2.png")

Отже, спочатку відкриваємо файл з оригінальним фото:

original_photo = open(original, "rb")

Причому прапор “rb“ вказує, що файл ми відкриваємо у двійковому форматі.

Читаємо файл з оригінальним зображенням:

read_original = original_photo.read()

Видаляємо фон зображення:

remove_background = rb.remove(read_original)

Створюємо файл з відредагованим зображенням:

edited_photo = open(edited, "wb")

Прапор “wb” означає запис у файл у двійковому форматі.

Поміщаємо зображення у новий файл:

edited_photo.write(remove_background)

Закриваємо обидва файли:

original_photo.close()
edited_photo.close()

Ось результат коду:

Фото без фону

Третій приклад

Останнім зображенням буде це:

Photo by Lance Reis on Unsplash

Останнім ми розглянемо спосіб з використанням бібліотеки OpenCV, яка встановлювалася на ваш комп’ютер разом із rembg раніше. Бібліотека OpenCV також надає функції для роботи з файлами.

Імпортуємо бібліотеку OpenCV:

import cv2

Ось код зі застосуванням даної бібліотеки:

def remove_photo_background(original, edited):
    original_photo = cv2.imread(original)
    remove_background = rb.remove(original_photo)
    edited_photo = cv2.imwrite(edited, remove_background)

    print(f"Image {original} successfully edited!")
    return edited_photo


remove_photo_background("abhinav-roy-SZh1kRFp8qM-unsplash.jpg", "without_background_3.png")

Читаємо файл з оригінальним зображенням:

original_photo = cv2.imread(original)

Видаляємо фон:

remove_background = rb.remove(original_photo)

Зберагіємо нове зображення:

edited_photo = cv2.imwrite(edited, remove_background)

Взагалі варто зазначити, що функції imread() перетворює зображення на матрицю, з якою потім працює функція imwrite().

Результат коду:

Фото без фону

Висновок

Ось таким чином можна легко видаляти фон за допомогою функції remove() бібліотеки rembg. Також на основі трьох прикладів ми побачили, що для роботи з файлами ми цілком можемо використовувати різні бібліотеки, або ж взагалі користуватися вбудованими функціями.

Всім дякую за увагу!

Статті про вітчизняний бізнес та цікавих людей:

  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

    Теми цього довгочиту:

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

    Теми цього довгочиту:

    Iphone 17
  • Як вибрати вживаний iPhone: коротке керівництво для розумної покупки

    Вторинний ринок смартфонів Apple активно зростає, і питання, як вибрати вживаний iPhone, стає актуальним для дедалі більшої кількості користувачів. Правильний підхід дозволяє отримати бу iPhone з актуальною iOS і доброю камерою за помітно нижчу ціну, ніж у нових пристроїв.

    Теми цього довгочиту:

    Iphone
  • Як подолати жіночу безплідність за допомогою донорських яйцеклітин

    Діагноз "безпліддя" рідко звучить як вирок одразу. Для багатьох жінок саме в цей момент вперше звучить словосполучення "донорські яйцеклітини" — і це часто не кінець шляху до материнства, а якраз новий, реальний шанс.

    Теми цього довгочиту:

    Донорство
  • Як заспокоїти зубний біль і чому самолікування може призвести до операції?

    Раптовий біль у зубі може призвести до порушення сну та ускладненого вживання їжі. Люди часто приймають таблетки, роблять полоскання або лікуються народними засобами. В таких випадках не варто відкладати візит до стоматолога, адже можуть з’явитись ускладнення.

    Теми цього довгочиту:

    Стоматологія
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@magnifiquedigitalworld

Світ, де код робить чудеса

93Довгочити
1.9KПерегляди
27Підписники
Підтримати
На Друкарні з 14 липня 2025

Більше від автора

  • Метод zfill() у Python

    У цій статті ми розберемо метод zfill() у Python на основі практичних прикладів його використання.

    Теми цього довгочиту:

    It
  • Команда WHERE у SQL

    Сьогодні ми розглянемо команду WHERE та принцип роботи цієї команди.

    Теми цього довгочиту:

    Програмування
  • Робота з омогліфами у Python

    У цій статті ми розберемо бібліотеку confusables та її функціонал. Також ми розглянемо, що таке омогліфи та як їх використовують.

    Теми цього довгочиту:

    Програмування

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: