Ở 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
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)
Mã:
faces = cv.HaarDetectObjects(small_img, cascade, cv.CreateMemStorage(0),haar_scale, min_neighbors, haar_flags, min_size)
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
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ả:
Link tai file
No comments:
Post a Comment