Hi, I am

Ngô Tôn

I am a programmer.

Home / AI/ML/DL/DS / Nhận diện chuyển động cử chỉ bàn tay với OpenCV – Hand Tracking

Nhận diện chuyển động cử chỉ bàn tay với OpenCV – Hand Tracking

Xin chào các bạn, hôm nay Ngô Tôn .IT sẽ chia sẻ một chủ đề là Nhận diện chuyển động cử chỉ bàn tay với OpenCV – Hand Tracking sử dụng MediaPipe Hands. Một chủ đề cũng khá hay làm nền tảng cho một số dự án trong series Tự học và phát triển ứng dụng thực tế AI, ML, DL, DS.

Ngày nay, khả năng nhận biết hình dạng và chuyển động của bàn tay có thể là một thành phần quan trọng trong việc cải thiện trải nghiệm người dùng trên nhiều lĩnh vực và nền tảng công nghệ khác nhau. Nó có thể tạo cơ sở cho việc hiểu ngôn ngữ ký hiệu và điều khiển cử chỉ tay, đồng thời cũng có thể cho phép phủ thông tin và nội dung kỹ thuật số lên trên thế giới vật lý trong thực tế tăng cường (Augmented reality – AR).

Khả năng nhận biết tay với thời gian thực là một nhiệm vụ khó khăn về thị giác máy tính (Computer Vision), vì hai bàn tay thường tự chạm vào nhau (ví dụ: khớp ngón tay / lòng bàn tay và lắc tay) và thiếu các kiểu tương phản cao.

MediaPipe

MediaPipe cung cấp các giải pháp ML đa nền tảng, có thể tùy chỉnh cho các phương tiện trực tiếp và phát trực tuyến (streaming).

MediaPipe Hands là giải pháp theo dõi ngón tay và bàn tay có độ trung thực cao. Nó sử dụng công nghệ máy học (ML) để suy ra 21 điểm mốc 3D của bàn tay chỉ từ một khung hình duy nhất.

Một số giải pháp ứng dụng:

  • Face Detection
  • Face Mesh
  • Iris
  • Hands
  • Pose
  • Holistic
  • Hair Segmentation
  • Object Detection
  • Box Tracking
  • Instant Motion Tracking
  • Objectron
  • KNIFT
  • AutoFlip
  • MediaSequence
  • YouTube 8M

Nhận diện chuyển động cử chỉ bàn tay – Hand Tracking

Trong bài viết này, mình sẽ hướng dẫn các bạn viết một ứng dụng Nhận diện chuyển động cử chỉ bàn tay sử dụng OpenCV và MediaPipe trong Python.

Đầu tiên, chúng ta import một số package:

Tiếp theo, mở camera và load thư viện MediaPipe Hands

Kế tiếp, chúng ta sẽ lấy ra các điểm trên bàn tay với hàm “multi_hand_landmarks”

Sau khi lấy được tọa độ các điểm, chúng ta sẽ tính toán với kích thước khung hình và vẽ điểm hình tròn với OpenCV.

Cuối cùng là kết nối các điểm đã vẽ lại với nhau với hàm “draw_landmarks”.

Ở đoạn code trên, có lệnh “if id == 0:”, mình vẽ điểm ở mu bàn tay (tương ứng với id 0) cho to nhất, còn lại vẽ kích thước nhỏ hơn. Với 21 điểm trên bàn tay sẽ có id từ 0 – 20.

Code chỉ ngắn gọn vậy thôi, nhưng bây giờ mình sẽ chuyển thành module Hand Tracking để tiện cho việc sử dụng sau này.

Tạo class Hand detector:

Khởi tạo với một số tham số:

Phương thức nhận diện bàn tay và vẽ khung xương:

Phương thức tìm các điểm trên bàn tay:

Chạy và xem kết quả:

hand-tracking

Chúc các bạn thành công!

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Tự động tạo code HTML & CSS từ hình ảnh với Deep Learning

Mục lục Xây dựng mạng nơ-ronPhiên bản đơn giảnPhiên bản nâng caoPhiên bản cuối cùng …

Leave a Reply

avatar
  Subscribe  
Notify of