Wednesday, February 24, 2016

CÀI ĐẶT RASPBERRY PI - Bài 5 : Viết chương trình nhận dạng khuôn mặt trên Raspberry Pi sử dụng Python-opencv.

Nguồn :codientu.org

Ở phần trước, chúng ta đã hoàn thành cài đặt python-opencv lên KIT Raspberry Pi và chạy thử một ứng dụng hiển thị hình ảnh từ webcam. Thực tế thì opencv đã xây dựng sẵn cho chúng ta hàm nhận dạng vật thể sử dụng thuật toán Haar: cv.HaarDetectObjects();

Đầu tiên, chúng ta import các thư viện, các biến cần thiết:

Mã:
import sys
import cv2.cv as cv
from optparse import OptionParser

min_size = (20, 20)
image_scale = 2
haar_scale = 1.2
min_neighbors = 2
haar_flags = 0
Hàm xử lý nhận dạng theo thuật toán Haar:

Mã:
def detect_and_draw(img, cascade):
    # nhan anh tu webcam
    gray = cv.CreateImage((img.width,img.height), 8, 1)
    small_img = cv.CreateImage((cv.Round(img.width / image_scale),cv.Round (img.height / image_scale)), 8, 1)

    # chuyen sang anh den trang
    cv.CvtColor(img, gray, cv.CV_BGR2GRAY)

    # giam kich thuoc anh de tang toc do xu ly
    cv.Resize(gray, small_img, cv.CV_INTER_LINEAR),
    cv.EqualizeHist(small_img, small_img)

    if(cascade):
        t = cv.GetTickCount()
        faces = cv.HaarDetectObjects(small_img, cascade, cv.CreateMemStorage(0),haar_scale, min_neighbors, haar_flags, min_size)
        t = cv.GetTickCount() - t
        print "detect time = %gms" % (t/(cv.GetTickFrequency()*1000.))
        if faces:
            for ((x, y, w, h), n) in faces:
                pt1 = (int(x * image_scale), int(y * image_scale))
                pt2 = (int((x + w) * image_scale), int((y + h) * image_scale))
                cv.Rectangle(img, pt1, pt2, cv.RGB(255, 0, 0), 3, 8, 0)

    cv.ShowImage("video", img)
Trong đó:

Mã:
faces = cv.HaarDetectObjects(small_img, cascade, cv.CreateMemStorage(0),haar_scale, min_neighbors, haar_flags, min_size)
Là hàm cho phép nhận dạng vật thể tương ứng trong ảnh mẫu: small_img và sử dụng các bộ lọc có trong file huấn luyện cascade.

Mình có đính kèm 2 file, face.py là code nhận dạng khuôn mặt, face.xml là file huấn luyện của thuật toán Haar-like. Các bạn giải nén chúng trong cùng một thư mục, ở đây mình đặt ở Desktop.

Để bắt đầu chạy chương trình, bạn cd vào Desktop và chạy lệnh sau:

Mã:
sudo python face.py --cascade=face.xml 0
Trong đó:

python face.py: Chạy chương trình python có trong file face.py
--cascade=face.xml 0: Các đối số đưa vào chương trình: file huấn luyện, index của webcam device.

Kết quả:
[codientu.org]_2013-11-19 00.12.40.

Link tai file

No comments:

Post a Comment