Lọc Màu ảnh Với Thư Viện OpenCV Trên Raspberry Pi
Có thể bạn quan tâm
Lọc màu ảnh với thư viện OpenCV trên Raspberry Pi
Xin chào các bạn !
Tiếp nối chủ đề về xử lý ảnh sử dụng thư viện OpenCV trên Raspberry Pi. Hôm nay mình sẽ giới thiệu đến các bạn ứng dụng thư viện này để lọc màu ảnh.
" Lọc màu ảnh (filter color) là tìm đối tượng dựa trên màu sắc của vật thể đó ". Bài này có ý tưởng tương tự bài Theo dõi đối tượng theo màu sử dụng Raspberry Pi và Camera CSI, chúng ta sẽ sử dụng python và OpenCV để thực hiện.
Giải thuật lọc màu ảnh này phù hợp nhất với đối tượng có màu sắc tương phản với background.
Chúng ta sử dụng hệ màu HSV để lọc màu.
HSV hay còn gọi là không gian màu HSB là một không gian màu dựa trên 3 thông số chính của không gian màu :
+ H viết tắt của từ HUE có nghĩa là vùng màu
+ S Viết tắt của từ SATURATION có nghĩa là độ bảo hòa màu .
+ V viết tắt của chữ VALUE có nghĩ là giá trị hay độ sáng của màu sắc.
Sau khi chuyển từ hệ màu RGB sang HSV thì filter giá trị màu bằng hàm cv2.inRange(), kết quả là ảnh binary gọi là mask.
Sau đó áp dụng mask này vào ảnh gốc ta được ảnh chỉ chứa màu trong giới hạn cần tìm.
Các bước tiến hành :
Bước 1 : Tạo các Trackbars
Chúng ta cần có 6 Trackbar tương ứng với 3 kênh H, S, V mỗi kênh có 2 Trackbar là min và max cụ thể ở đây là [H_min,; H_max], [S_min; S_max], [V_min; V_max].
Bước 2 : Tách màu cần tìm dựa vào giá trị của Trackbar.
Ở đây chúng ta sử dụng hàm cv2.inRange() để làm công việc tách màu trên.
Cụ thể ở đây chúng ta sẽ căn chỉnh Trackbars sao cho mask thể hiện đúng vùng màu mong muốn. Tiếp theo là copy vùng màu theo mask vào ảnh mới.
Các bạn có thể gõ lại đoạn code dưới đây hoặc tải xuống từ github tại đây. (Filter_color.py)
import cv2import numpy as np def nothing(x): pass # create Trackbarscv2.namedWindow("Trackbars")cv2.createTrackbar("H_min", "Trackbars", 0, 179, nothing)cv2.createTrackbar("S_min", "Trackbars", 0, 255, nothing)cv2.createTrackbar("V_min", "Trackbars", 0, 255, nothing)cv2.createTrackbar("H_max", "Trackbars", 179, 179, nothing)cv2.createTrackbar("S_max", "Trackbars", 255, 255, nothing)cv2.createTrackbar("V_max", "Trackbars", 255, 255, nothing) while True : # read image image = cv2.imread("/home/pi/Desktop/Cam.jpeg") # resize image image = cv2.resize(image,(320,240)) # converting frame(image == BGR) to HSV(hue-saturation-value) hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # get value Trackbars H_min = cv2.getTrackbarPos("H_min", "Trackbars") S_min = cv2.getTrackbarPos("S_min", "Trackbars") V_min = cv2.getTrackbarPos("V_min", "Trackbars") H_max = cv2.getTrackbarPos("H_max", "Trackbars") S_max = cv2.getTrackbarPos("S_max", "Trackbars") V_max = cv2.getTrackbarPos("V_max", "Trackbars") # range color lower_red = np.array([H_min, S_min, V_min]) upper_red = np.array([H_max, S_max, V_max]) # Morphological Transformations,Opening and Closing thresh = cv2.inRange(hsv,lower_red, upper_red) kernel = np.ones((5,5),np.uint8) mask = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel) mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) result = cv2.bitwise_and(image, image, mask = mask) cv2.imshow("Original", image) cv2.imshow("mask", mask) cv2.imshow("result", result) if cv2.waitKey(1) & 0xFF == ord('q'): exit()cv2.destroyAllWindows() |
Ta thu được kết quả như hình :
Một số ứng dụng của lọc màu ảnh.
+ Phát hiện rầu nâu trên lúa :
+ Phát hiện trứng ốc bươu vàng :
Nếu các bạn có bất kỳ ý tưởng mới nào đừng ngần ngại mà hãy inbox trực tiếp cho fanpage . Xin chào và hẹn gặp lại các bạn trong các bài viết tiếp theo !!!
PIVIETNAM.COM.VN CHÚC CÁC BẠN THÀNH CÔNG !!!
Thực hiện bài viết : Đào Văn Hậu
Để cập nhật các tin tức công nghệ mới các bạn làm theo hướng dẫn sau đây :
Các bạn vào Trang chủ >> Tin tức. ở mục này có các bài viết kỹ thuật thuộc các lĩnh vực khác nhau các bạn có thể lựa chọn lĩnh vực mà mình quan tâm để đọc nhé !!!
Các bạn cũng có thế kéo xuống cuối trang để xem những tin tức công nghệ mới nhất.
Từ khóa » Nhận Diện Màu Sắc Python
-
Video Hướng Dẫn: Nhận Dạng Màu Sắc Với Python Và OpenCV Nhé ...
-
Trích Xuất Và Phân Tích Màu Sắc Từ Hình ảnh Bằng Python - Morioh
-
Python: Phân đoạn Hình ảnh Bằng Không Gian Màu Trong OpenCV + ...
-
Nhận Dạng ảnh Cơ Bản Với Python - Viblo
-
Nhận Dạng Màu Sắc Chính Xác Bằng Phần Mềm Viết Từ Python
-
Tách Một đối Tượng Có Màu Quy định Ra Khỏi Bức ảnh - YouTube
-
KudoKhang/ColorDetector: Xác định Màu Sắc Qua Camera - GitHub
-
Machine Learning Tự động Nhận Diện Màu Sắc
-
Chương 5. Xử Lý ảnh Phân Loại Màu Sắc Và Phát Hiện Tọa độ Của Vật
-
Các Hệ Màu Trong Xử Lý ảnh - Kipalog
-
Nhan Dien Hinh Anh Bang Python | Nguyễn Công Trình
-
Phần 8. Các Không Gian Màu Trong OpenCV
-
Theo Dõi đối Tượng Theo Màu - Tracking Color - THỊ GIÁC MÁY TÍNH
-
Xử Lý Hình ảnh Bằng Python - Koodibar