[C++] Chương trình nhận diện khuôn mặt

Trong ứng dụng nhận diện khuôn mặt thì bước nhận diện là bước cuối cùng để hiển thị kết quả. Tìm hiểu các bài trước ở đây:
Phát hiện khuôn mặt – face detection
Phát hiện khuôn mặt – P2: tối ưu hoá

Và cũng đã có chương trình nhận diện khuôn mặt viết bằng EmguCV, tuy nhiên code cũng hơi cũ rồi:
[C#] Nhận diện khuôn mặt – face recognition

Cách thức hoạt động

– Khi chương trình load lên sẽ tìm các khuôn mặt đã crop trong folder faces, thí dụ:
faces\nguyenvana
faces\nguyenvanb
faces\nguyenvanc

– Sau đó chương trình sẽ training các khuôn mặt trong đó thành model nhận dạng
– Tiếp theo là đọc hình ảnh từ camera, tách ra từng frame để xử lý
– Trong mỗi frame, phát hiện khuôn mặt bằng hàm detectMultiScale
– Nhận dạng khuôn mặt (predict) bằng khuôn mặt đã crop, thuật toán trả về tên người & độ confident
– Hiển thị kết quả (vẽ hình chữ nhật & tên người cho user)

Cách sử dụng chương trình

Chương trình chỉ viết code ở mức tối thiểu với các bước ở trên. Để sử dụng được chương trình cần làm thêm vài bước:
– Chạy chương trình lên nó sẽ save ảnh khuôn mặt lại vào folder faces
– Tiến hành tạo folder với tên người, sau đó bỏ ảnh người đó vào trong folder
– Chạy lại chương trình

Vài lưu ý
– Nên có khoảng 10-20 ảnh cho mỗi người
– Xóa bỏ những hình ảnh nhòe hoặc nhiễu, chỉ lấy những ảnh chất lượng

Source code

Github

Chương trình sử dụng opencv 3.2.0

Leave a Reply