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

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

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

  • CRM keyCRM: зручне рішення для продажів, комунікацій і керування командою

    Успіх компанії залежить від того, наскільки швидко вона здатна опрацьовувати вхідні запити. Коли дані про клієнтів розпорошені між різними месенджерами, виникає хаос. CRM keyCRM пропонує вихід із цієї ситуації, об’єднуючи всі робочі процеси в єдиному зручному інтерфейсі.

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

    Crm
  • Різниця між UX і UI, яку варто зрозуміти ще до першого заняття

    Більшість людей, які обирають професію UX чи UI, довго вважають це одним і тим самим. Насправді це два різних підходи до роботи над продуктом, і плутанина між ними гальмує розвиток ще на старті.

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

    Ui-ux
  • Логіка змін: як SEO оптимізація прибирає бар’єри до зростання

    Багато компаній приходять у SEO з очікуванням швидкого ривка, але дійсний ефект починається там, де сайт перестають латати точково. Тому в центрі роботи стоїть не окрема дія, а послідовні зміни. Оптимізація сайту має прибирати системні перешкоди, а не маскувати їх новими текстами

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

    Seo
  • Музичний футуризм: неймовірні інструменти XXI століття

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

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

    Музичні Інструменти
  • Стіл – всьому голова? Так, якщо його правильно підібрати

    Коли починаєш вивчати пропозицію меблевих фабрик щодо столів, дивуєшся кількості варіантів, адже вони пропонують різні розміри, різні матеріали, різноманітні форми та дизайни. Скористайтесь нашим каталогом MebelOK, щоб Ви могли підібрати найкращу модель для Вашого приміщення

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

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

Нічний читач

56Довгочити
995Перегляди
18Підписники
Підтримати
На Друкарні з 14 липня 2025

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

  • Список різноманітних бібліотек у Python

    Всіх вітаю! Сьогодні хочу поділитися великим списком бібліотек у Python для різного призначення та потреб:https://github.com/vinta/awesome-pythonТут багато цікавих бібліотек зібрано за сферами їхньго призначення.

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

    It
  • Roadmap — ваш путівник до поставлених цілей.

    Сайт Roadmap вміщує у собі багато путівників до великої кількості професій та сфер, у яких доволі чітко описано, що саме потрібно для повноцінного вивчення того чи іншого предмету зацікавленості.

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

    It
  • Клас itemgetter() у модулі operator

    Всіх вітаю! У даній статті ми продовжимо тему спеціальних властивостей словників у Python. На цей раз ми поговоримо про модуль operator та його клас itemgetter(), яка дозволяє працювати зі списками та словниками у Python.

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

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

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

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

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

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