Nhận diện khuôn mặt người siêu dễ hiểu chỉ với 12 dòng code Python

Xin chào các bạn ! Nhiều bạn cảm thấy trí tuệ nhân tạo (AI) nói chung và xử lý ảnh nói riêng là rất khó. Tuy nhiên, đối với những bạn là những người mới, hoặc các bạn sinh viên mới tiếp cận với AI thì không nên nhìn vào những thứ lớn lao quá mà các công ty lớn đã thực hiện. Hãy tìm những ví dụ, những bài toán đơn giản nhất để có thể thực hành và tích lũy kinh nghiệm từ đó.

Hôm nay mình sẽ chia sẻ một đoạn code nho nhỏ, chỉ với 12 dòng code Python, sử dụng OpenCV là các bạn đã có thể xây dựng một chương trình nhận diện khuôn mặt người – Face Detection. Face Detection thì được ứng dụng rất nhiều trên các ứng dụng, phần mềm liên quan đến xử lý ảnh nhé. Kể ví dụ như trên các phần mềm camera trên điện thoại, phần mềm chấm công sử dụng camera, camera thông minh,…

Không luyên thuyên nữa, Let’s Go !!!

Bước 1:

Các bạn cần chuẩn bị một số thứ cần thiết trước.
– Đầu tiên là cài đặt thư viện OpenCV bằng lệnh command line siêu ngắn:

pip install opencv-python
Đã cài đặt xong OpenCV

– Thứ hai hãy download file haarcascade_frontalface_default.xml

Bước 2:

Sau khi đã chuẩn bị xong, thì đây là 12 dòng code thần thánh nhé:

import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:
    _, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    cv2.imshow('img', img)
    cv2.waitKey(1)
cap.release()

Hãy tạo 1 file .py và copy 12 dòng code và paste vào file đó nhé.
Copy file “haarcascade_frontalface_default.xml” vào cùng thư mục với file .py nhé

Mình tạo file “FaceDetection.py” và copy file .xml vào cùng thư mục

Bước 3:

Sau đó mở file “FaceDetection.py” để tiến hành chạy chương trình thôi. Ở đây mình sử dụng IDLE python để mở và run chương trình. Bạn có thể sử dụng nhiều loại IDE khác nhé

12 dòng code

Sau khi chạy chương trình, bạn sẽ thấy kết quả là khuôn mặt của bạn sẽ được nhận diện và được bao quanh bởi 1 cái khung màu xanh.

Test thử Face Detection

Giải thích một chút 12 dòng code:

import cv2

Để import thư viện OpenCV ở bước 1 chúng ta đã cài đặt để sử dụng

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

Để sử dụng hàm CascadeClassifier() trong OpenCV có nhiệm vụ đọc các đặc trưng của khuôn mặt đã được lưu sẵn trong file “haarcascade_frontalface_default.xml” mà chúng ta đã download từ bước 1

cap = cv2.VideoCapture(0)

Dùng để mở camera (webcam) , tùy vào loại camera thì giá trị truyền vào sẽ khác . Ở đây sài camera trên laptop luôn nên tham số sẽ đặt là 0

 _, img = cap.read()

Dòng này để đọc từng bước hình từ camera (webcam) trong từng vòng lặp while

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Dòng này để convert hình ảnh vừa đọc từ camera sang dạng màu Gray

  faces = face_cascade.detectMultiScale(gray, 1.1, 4)
 

Sử dụng hàm face_cascade.detectMultiScale() để nhận diện ra khuôn mặt

for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)

Dòng này có nhiệm vụ lấy các giá trị tham số vị trí của khuôn mặt, sau đó dùng hàm cv2.rectangle() để vẽ lên khung màu xanh bao quanh khuôn mặt

cv2.imshow('img', img)

Dòng này để show tấm ảnh nên một cửa sổ mới với tên cửa sổ là “img”

    cv2.waitKey(33)

Dòng này sử dụng hàm cv2.waitKey() để hiển thị hình ảnh với tham số thời gian là milisecond.
Ví dụ bạn muốn hiển thị với 30 khung hình / giây thì lấy 1 giây = 1000 milisecond / 30 thì ra xấp xỉ 33.
Bạn sẽ nhập tham số là cv2.waiKey(33)

Rất đơn giản đúng không nào, thử ngay nhé!

CHÚC BẠN THÀNH CÔNG !

5 2 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x