Xóa nền xanh cho hình ảnh bằng Python
Hướng dẫn cách sử dụng Python để xóa phông xanh (chroma key) khỏi hình ảnh bằng thư viện OpenCV. Mã Python này giúp bạn loại bỏ nền xanh để thay thế bằng nền khác hoặc làm cho nó trở nên trong suốt.
import cv2
import numpy as np
def remove_blue_background(image_path, output_path):
# Đọc hình ảnh từ file
image = cv2.imread(image_path)
# Chuyển đổi hình ảnh từ BGR sang HSV
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# Định nghĩa phạm vi của màu xanh (phông xanh)
lower_blue = np.array([35, 100, 100])
upper_blue = np.array([85, 255, 255])
# Tạo mặt nạ (mask) để nhận diện các vùng xanh
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# Chuyển đổi mặt nạ thành ảnh với kênh alpha (trong suốt)
result = cv2.bitwise_and(image, image, mask=~mask)
# Lưu hình ảnh kết quả
cv2.imwrite(output_path, result)
# Ví dụ sử dụng
remove_blue_background('input_image.jpg', 'output_image.png')
Giải thích chi tiết:
-
Đọc hình ảnh từ file:
cv2.imread(image_path)
: Đọc hình ảnh từ đường dẫn file.
-
Chuyển đổi hình ảnh sang HSV:
cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
: Chuyển đổi không gian màu từ BGR (mặc định của OpenCV) sang HSV để dễ dàng xử lý màu xanh.
-
Định nghĩa phạm vi màu xanh:
lower_blue
vàupper_blue
xác định phạm vi của màu xanh trong không gian màu HSV. Thay đổi các giá trị này để phù hợp với loại phông xanh bạn đang sử dụng.
-
Tạo mặt nạ và loại bỏ phông xanh:
cv2.inRange(hsv, lower_blue, upper_blue)
: Tạo mặt nạ để nhận diện màu xanh trong hình ảnh.cv2.bitwise_and(image, image, mask=~mask)
: Loại bỏ các vùng xanh khỏi hình ảnh bằng cách sử dụng mặt nạ.
-
Lưu hình ảnh kết quả:
cv2.imwrite(output_path, result)
: Lưu hình ảnh đã xử lý vào đường dẫn file đầu ra.
Phiên bản Python:
Mã này sử dụng thư viện OpenCV, có thể chạy trên Python 3.6 và các phiên bản mới hơn. Đảm bảo rằng thư viện OpenCV đã được cài đặt, có thể thực hiện qua lệnh pip install opencv-python
.