Để theo dõi đối tượng thì có nhiều cách: theo dõi theo màu sắc, theo hình dạng,… Trong đó theo dõi theo màu là đơn giản nhất. Chỉ cần xác định được màu sắc của vật thể cần tìm rồi cho chương trình tìm màu đó là xong.
Để có thể hiểu sâu hơn tham khảo bài: Lọc màu ảnh – filter color
Như vậy, hệ màu HSV phù hợp nhất để tìm ra 1 màu nào đó. Hệ màu HSV có 3 yếu tố là màu sắc, độ bão hoà và độ sáng. Màu sắc chỉ ra màu đó là xanh, đỏ, tím vàng. Độ bão hoà chỉ ra sắc độ màu (cường độ màu) chỉ độ đậm nhạt của màu. Còn độ sáng sẽ chỉ ra độ sáng độ sáng tối.
Người dùng sẽ chỉ ra đâu là màu họ cần theo dõi bằng cách thay đổi giá trị của trackbar. Sau đó dùng hàm cv::moments() để tìm ra trọng tâm của vùng màu đó.
Bước 1: tạo các trackbar và lấy hình ảnh từ webcam
Chương trình cần biết màu cần tìm nằm trong khoảng nào của 3 kênh HSV. Như vậy là cần 6 trackbar do H,S,V cần 2 trackbar để biết [Hmin; Hmax], [Smin; Smax], [Vmin; Vmax].
Bước 2: tách ra màu cần thiết dựa vào giá trị của trackbar
Bước này đơn giản, chỉ cần sử dụng hàm cv::inRange là được
Tới bước 3: tìm trọng tâm của vùng cần tìm
Trước khi tìm trọng tâm thì lọc bớt nhiễu, sau đó sử dụng hàm cv::moments để tìm trọng tâm vùng cần tìm
Download
TrackingColor
Trong repo có nhiều project, các bạn chỉ cần chạy TrackingColor.sln là được.
ad cho mình hỏi cách lấy mã màu bằng vị trí chuột ở bất ki chổ nào trên màn hình với ạ ?
ad làm tiếp 1 bài về phát hiện đối tượng bằng phương pháp Template matching thì thật tuyệt
ok bạn, mình sẽ viết sớm
Hóng bài đăng của ad, Phương pháp đó lệch tỷ lệ hoặc mẫu bị khác góc nhìn thì khó phát hiện dc đối tượng. Đây mang tính chất nghiên cứu học thuật thì ms sd Template Matching.
link window form demo lỗi ad ạ
à ko, source C++
Sửa lại rồi nhé bạn
tracking color bị lỗi rồi ad ơi
Update link rồi nhé bạn
@vohungvi add ơi. e có chuyện cần hỏi ạ. a cho e xin gmail dc ko ạ
bạn có thể gửi mail vào vohungvi@vohungvi.com hoặc chat https://www.facebook.com/vohungvi/