Phát hiện cử chỉ bàn tay- Detect hand gesture

Phát hiện cử chỉ bàn tay là 1 đề tài khá thông dụng, có thể ứng dụng vào điều khiển robot, smarthome. Tương tự như smartphone nhận tín hiệu từ ngón tay như touch, multi touch, hold,… Bạn có thể sử dụng thuật toán này làm input cho ứng dụng.

Có nhiều thuật toán khác nhau để phát hiện cử chỉ bàn tay nhưng bài viết này chỉ giới thiệu 1 thuật toán thấy hiệu quả nhất, đó là sử dụng màu sắc bàn tay.

Thuật toán:

chương trình này sử dụng màu sắc để phát hiện bàn tay. Do bàn tay có nhiều màu nhiều chương trình sẽ lấy nhiều màu ở những vị trí khác nhau: lòng bàn tay, ngón tay,… rồi ghép lại thành 1 hình. Để sử dụng bạn giơ bàn tay che lên tất cả các ô vuông, chương trình sẽ lấy màu từ các ô vuông đó.

Đây là ví dụ minh hoạ khi chỉ lấy 1 màu để detect màu, bàn tay sẽ rất loang lổ
hand_detect_one_color



Đây là hình ảnh của chương trình khi lấy nhiều điểm màu. Tuy nhiên cần phải tính toán góc mở giữa các ngón tay, các đỉnh ở đầu ngón tay để tìm ra vị trí ngón tay. Sau đó vẽ chấm màu xanh lên ảnh.
hand_detect

Lưu ý: màu bàn tay rất dễ nhầm với màu da người.

Cách sử dụng

Sau khi build source, chương trình sẽ vẽ ra các ô màu xanh. Đặt bàn tay che các ô như hình bên duới rồi ấn Enter. Chương trình sẽ xử lý màu, khi đó các ô vuông sẽ chuyển sang màu trắng. Khi thấy các ô vuông biến mất là được.
phát hiện cử chỉ bàn tay

Download

Document on Google Drive: Hand_detection.pdf

GitHub: https://github.com/thigiacmaytinh/TGMTcpp
Source code các bạn checkout code về rồi chạy HandDetection_VS2015.sln vì trong repo có nhiều example khác.

Leave a Reply