Mã nguồn ví dụ sử dụng thư viện OpenCV và Mediapipe để nhận diện các bộ phận cơ thể. Mã nguồn hỗ trợ xác định các điểm đặc trưng trên khuôn mặt và vị trí bàn tay với nhãn tùy chỉnh.
Đoạn code tạo một ứng dụng giao diện đồ họa sử dụng PyQt5 để phát hiện ngón tay và khuôn mặt từ video trực tiếp của camera, được hỗ trợ bởi thư viện OpenCV và MediaPipe. Ứng dụng có khả năng nhận diện số lượng ngón tay được giơ lên và hiển thị tên từng ngón. Ngoài ra, nó cũng xác định khuôn mặt và đánh dấu vị trí trán bằng dấu cộng.
Cấu trúc chính của mã
- Khởi tạo thư viện và mô-đun:
- Khởi tạo
MediaPipe Hands
để nhận diện bàn tay vàFace Detection
để nhận diện khuôn mặt với độ tin cậy tối thiểu là 0.7. - Đường dẫn tới phông chữ Unicode để hiển thị tên các ngón tay bằng tiếng Việt.
- Khởi tạo
- Các hàm chính:
- fingers_up: Xác định các ngón tay đang giơ lên dựa trên tọa độ landmark của từng ngón.
- draw_finger_names: Hiển thị tên từng ngón tay trên khung hình.
- draw_forehead_cross: Đánh dấu vị trí trán bằng dấu cộng trên khuôn mặt được phát hiện.
- Lớp
VideoApp
:- Tạo giao diện đồ họa để hiển thị video trực tiếp từ camera với hai nút điều khiển:
Start Tracking
: Bắt đầu nhận diện và theo dõi.Stop
: Dừng quá trình nhận diện.
- Hàm
update_frame
xử lý từng khung hình của video:- Chuyển đổi khung hình để xử lý nhận diện bàn tay và khuôn mặt.
- Nếu phát hiện bàn tay, vẽ kết nối và hiển thị số ngón tay giơ lên cùng tên từng ngón tay.
- Nếu phát hiện khuôn mặt, vẽ hình vuông bao quanh khuôn mặt và dấu cộng trên trán.
add_letterbox
: Cân chỉnh video vào giữa với viền đen xung quanh.
- Tạo giao diện đồ họa để hiển thị video trực tiếp từ camera với hai nút điều khiển:
- Chạy ứng dụng:
- Khởi tạo và chạy ứng dụng Qt với cửa sổ hiển thị video trực tiếp từ camera và các chức năng nhận diện.
Hướng dẫn sử dụng
- Chạy ứng dụng: Chạy mã, cửa sổ
Hand and Face Tracking
sẽ mở lên. - Bắt đầu theo dõi: Nhấn nút
Start Tracking
để bật camera và bắt đầu nhận diện. - Hiển thị kết quả:
- Số lượng ngón tay giơ lên và tên từng ngón sẽ hiển thị trên khung hình nếu bàn tay được nhận diện.
- Khi phát hiện khuôn mặt, ứng dụng sẽ vẽ một khung bao quanh khuôn mặt và đánh dấu vị trí trán bằng dấu cộng.
- Dừng theo dõi: Nhấn nút
Stop
để dừng camera và xóa hiển thị.