Як замінити фон зображення на білий за допомогою OpenCV
У цій статті ми розглянемо, як можна за допомогою Python та бібліотеки OpenCV замінити фон зображення на білий. Це може бути корисним для обробки підписів, логотипів або інших об'єктів, де потрібен чистий білий фон. Нижче наведено код, який можна використовувати для цієї задачі.
Пояснення коду
Функція
replace_background_with_white
приймає зображення як вхідні дані, виконує обробку та зберігає результат з білим фоном у поточному каталозі. Вона використовує HSV-простір для точнішого виділення кольорів і маскування об'єкта. Цей підхід дозволяє залишити об'єкт видимим, а фон замінити на білий.
Код
import cv2
import numpy as np
import os
def replace_background_with_white(image, output_filename="processed_image.png"):
"""
Замінює фон зображення на білий і зберігає його в поточному каталозі.
Параметри:
image (numpy.ndarray): Вхідне зображення у форматі OpenCV.
output_filename (str): Назва файлу для збереження обробленого зображення.
Повертає:
str: Шлях до збереженого обробленого зображення.
"""
# Перетворити зображення в HSV для кращого виділення кольорів
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# Встановити діапазон для світлих кольорів (білий фон)
lower_white = np.array([0, 0, 200])
upper_white = np.array([180, 20, 255])
# Створити маску для виділення білого фону
mask = cv2.inRange(hsv, lower_white, upper_white)
# Інвертувати маску, щоб виділити об'єкт (підпис)
mask_inv = cv2.bitwise_not(mask)
# Застосувати маску до оригінального зображення
result = cv2.bitwise_and(image, image, mask=mask_inv)
# Створити білий фон
white_bg = np.full_like(image, 255) # Білий фон
# Поєднати об'єкт з білим фоном
final_image = np.where(result == 0, white_bg, result)
# Зберегти зображення в поточний каталог
output_path = os.path.join(os.getcwd(), output_filename)
cv2.imwrite(output_path, final_image)
return output_path
# Приклад використання
input_path = "sign.jpg" # Заміни на шлях до твого файлу
# Завантажити зображення
image = cv2.imread(input_path)
# Виклик функції для обробки зображення та збереження результату
output_path = replace_background_with_white(image, "sign_white_bg.png")
print(f"Зображення збережено за адресою: {output_path}")
Як видно з прикладу, цей код автоматично визначає білі області на зображенні та замінює фон на білий. Ви можете використовувати цю функцію для різних типів зображень, що потребують видалення або заміни фону. Збереження відбувається в поточному каталозі, що робить процес простим і зручним для роботи.
Немає коментарів:
Дописати коментар