Raspberry Pi Thiên Lý Nhãn (Phần 2): Nhận diện khuôn mặt với OpenCV

Mô tả dự án: 

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)
lên
16 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Cách sử dụng trình biên soạn Vi / VIM - Trình sửa file cho máy tính nhúng dành cho pro

Vim là một trong những trình biên soạn dòng lệnh mạnh và phổ biến nhất. Nó chỉ sẵn có trên nền của Linux và Unix, những sau đó nó cũng xuất hiện cả trên Windows. Giao diện của nó thì gọn gàng và đơn giản, và bạn có thể kết hợp các phím để thực hiện các công việc như copy-paste, tìm kiếm và thay thế, xóa một số dòng, và nhiều chức năng khác nữa. Hôm nay, chúng ta sẽ cùng nhau học cách dùng vim trên Raspberry Pi.

lên
3 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Áo yếm cho em - Cách làm hộp đựng (case) tiêu biểu cho con cưng Arduino

Con người còn có nhu cầu ăn diện, huống chi là "con cưng" arduino của bạn. Ngoài việc tăng tính chuyên nghiệp cho đề án của bạn, case còn là bộ giáp bảo vệ cho board mạch "mồ hôi xương máu" khỏi các tai nạn bất ngờ, đặc biệt là với việc vô tình làm đoản mạch với các dụng cụ kim loại vô tình rơi phải. Bài này tui sẽ hướng dẫn các bạn một số cách làm case tiêu biểu nha!

lên
16 thành viên đã đánh giá bài viết này hữu ích.

"Fiat Lux - Hãy có ánh sáng": (Phần 4) Đồng hồ Arduino với neopixel WS2812

3 bài trước các bạn đã làm quen nhấp nháy với module neopixel WS2812 roài hen. Nhưng mà mỗi 1 bóng hoài cũng cũng chán nên lần này chúng ta chơi tới bến ứng dụng 24 bóng luôn nha!

lên
21 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: