Đây là phần đầu tiên về seri xử lý ảnh với OpenCV . Trong phần này mình sẽ hướng dẫn nhận diện được mặt người qua camera máy tính .

I. Chuẩn bị

  • Install thư viện opencv bằng dòng lệnh trên cmd :
pip install opencv-python

Chờ cho nó cài 1 xíu , ở đây mình đã cài săn nên nó hiện thế này :

cài thư viện opencv-python
  • Tạo thư mục opencv . Nếu ở win thì nên chọn nó vào thư mục hiển thị trên cmd cho tiện

Của mình là c:\users\son thì mình sẽ lưu đường dẫn là c:\users\son\opencv cho tiện sử dụng bằng cách mở cmd lên gõ lệnh :

mkdir opencv
cd opencv

Như vậy là xong ! Giờ mở visual code lên và mở thư mục opencv vừa tạo .

vào địa chỉ như trên cmd thôi và tìm tới thư mục opencv chọn select

  • Mở 1 tab code lên và lưu lại với tên detect_face.py
  • Sau đó bấm ctrl + s , Chọn thư mục lưu là opencv :
Lưu file

II. Tiến Hành

  • Copy 15 dòng code thần thánh này bỏ vào là xong :
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)
    k = cv2.waitKey(30) & 0xff
    if k==27:
        break
cap.release()

Giải thích code một xíu :

cap = cv2.VideoCapture(0)

Dòng này dùng để mở camera , tùy vào loại camera thì giá trị truyền vào sẽ khác . Ở đây sài camera trên lap nên tham số là 0 .

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

Dòng này là khai báo 1 lớp nhận diện khuôn mặt lưu vào 1 biến . Nói thế cho vuông chứ lên google dùng tiếng anh hay việt gì tìm chả ra tài liệu nào nói về cái này . Nói như mở ngủ

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

Dòng này là dịch chuyển cái ô hình vuông cho vào mặt mình . Tham số này là chuẩn rồi . Họ tìm mòn mắt mới ra được đó :v

 _, img = cap.read()

Khi bật camera lên vào mỗi vòng lặp while nó sẽ chụp 1 bức hình phân tích

 if k==27:
        break

Khi bạn nhấn Esc nó thoát vòng lặp và kết thúc chương trình .

Rồi chạy thử nào ! ( trong visual bấm Ctrl+shift+` và gõ vào python detect_face.py) :

Kêt quả nhận diện khuôn mặt

Vậy là Xong rồi ! Dễ quá dễ phải không nào !

III. Tổng kết

Như vậy bước đầu nhận diện đã xong rồi đấy . Dựa trên cái này các bạn có thể làm được nhiều thứ . Hôm sau mình sẽ làm cho nó xuất hiện tên mình trên màng hình luôn :v . Các bạn theo dõi nhé ! Hẹn gặp lại .