Tách 3 màu rgb từ 1 bức ảnh OpenCV + numpy
by Pymier0
Cách biểu diễn màu trên máy tính phổ biến dùng hệ màu RGB với 3 màu Red Green Blue (đỏ - xanh lục - xanh lam). Khi đọc file ảnh vào bằng opencv, mặc định sẽ có 1 array dạng (dài, rộng, 3), với 3 là 3 “kênh” màu. Để tách riêng 3 kênh màu, ta giữ nguyên 1 kênh, và gán 2 kênh còn lại bằng 0 (sử dụng numpy - vì 1 bức ảnh đọc vào từ opencv là 1 numpy ndarray).
# $ python bgr.py ~/Pictures/python-logo.png
import sys
import cv2 as cv
cim = cv.imread(sys.argv[1])
c1 = cim.copy()
c1[:, :, 1:] = 0
cv.imwrite("blue.png", c1)
c2 = cim.copy()
c2[:,:,0] = 0
c2[:,:,2] = 0
cv.imwrite("green.png", c2)
c3 = cim.copy()
c3[:,:,:2] = 0
cv.imwrite("red.png", c3)
print("Done")
Kết quả thu được 3 bức ảnh với màu lần lượt là xanh lam, xanh lục, đỏ (BGR). Theo “cộng đồng mạng StackOverflow”, đó là do “lịch sử” để lại, khi mà OpenCV dùng BGR chứ không theo thứ tự phổ biến RGB.
Hết.
Đăng ký ngay tại PyMI.vn để học Python tại Hà Nội TP HCM (Sài Gòn), trở thành lập trình viên #python chuyên nghiệp ngay sau khóa học.