monsieurvechai gửi vào
- 99520 lượt xem
Bài này tui sẽ hướng dẫn các bạn dùng OpenCV khai thác sức mạnh tính toán của Raspberry Pi, cụ thể là trong việc nhận dạng khuôn mặt.
Giới thiệu OpenCV
OpenCV (Open Source Computer Vision) là một thư viện các hàm lập trình rất lợi hại chủ yếu nhắm vào thị giác máy tính (computer vision) theo thời gian thực, ban đầu được phát triển bởi Trung tâm nghiên cứu của Intel tại Nizhny Novgorod (Nga). Một số ứng dụng của OpenCV bao gồm:
- Nhận dạng cử chỉ
- Nhận dạng chuyển động
- Nhận dạng khuôn mặt
- Thực tế ảo
OpenCV được viết chủ yếu cho C++ nhưng hiện nay đã có cầu nối cho Pyhon, Java, Matlab. Việc cài đặt OpenCV trên Raspberry Pi là hết sức tốn thời gian (khoảng 5 tiếng đồng hồ). Rất may mắn là có 1 anh hùng đã cài và host 1 cái image đã có OpenCV, bạn chỉ việc download image cho nó nhanh. Tuy nhiên anh bạn này lại dùng 1 cái microSD 16GB nên các bạn nhớ dùng card cho đúng dung lượng nhé nhé!
https://drive.google.com/file/d/0B11p78NlrG-vZzdJLWYxcU5iMXM/view
Nếu bạn thiếu tiền mua card nhưng thừa thời gian thì có thể vào đây theo hướng dẫn để cài OpenCV:
http://www.pyimagesearch.com/2015/02/23/install-opencv-and-python-on-your-raspberry-pi-2-and-b/
Code thoai
Tải package fswebcam để điều khiển chụp ảnh bằng webcam:
sudo apt-get install fswebcam
Chép đoạn code sau và lưu lại với tên telepresent_2.py:
#By MonsieurVechai import numpy as np import os import cv2 os.system("fswebcam image.jpg") face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') img = cv2.imread('/home/pi/Desktop/image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) #print len(faces) for (x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) roi_gray = gray[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] cv2.imshow('img',img) cv2.waitKey(0) cv2.destroyAllWindows()
Lưu ý
Các bạn có thể đếm số người có trong hình bằng cách uncomment đoạn code:
#print len(faces)