# import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import numpy
import time
import cv2
#multiple cascades: https://github.com/Itseez/opencv/tree/master/data/haarcascades
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
# initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(640, 480))
# allow the camera to warmup
time.sleep(0.1)
# capture frames from the camera
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
image = frame.array
gray = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale (gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle (image, (x, y), (x + w, y + h), (255, 0, 0), 2)
roi_gray = gray [y: y + h, x: x + w]
roi_color = image [y: y + h, x: x + w]
eyes = eye_cascade.detectMultiScale (roi_gray)
for (ex, ey, ew, eh) in eyes:
cv2. rectangle (roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)
# show the frame
cv2.imshow("Frame", image)
key = cv2.waitKey(1) & 0xFF
# clear the stream in preparation for the next frame
rawCapture.truncate(0)
# if the `q` key was pressed, break from the loop
if key == ord("q"):
break
ÀÎÅͳݿ¡ ÀÖ´ø ¼Ò½ºÄÚµåÀÌ¸ç ¶óÁîºñ¾È OS¿Í OpenCV ¶óÀ̺귯¸® ±×¸®°í ÆÄÀ̽ãÀ» »ç¿ëÇÕ´Ï´Ù.
¿©±â¼ ´«ÀÎ½Ä ¸øÇÒ ½Ã warning Ãâ·ÂÀ» ÇҰǵ¥ ¾îÂîÇϸé ÁÁ°Ú½À´Ï±î?
ÇöÀç »ç¿ëÇÏ´Â Å°Æ®´Â ¶óÁ¸®ÆÄÀÌ3 B+ ¸ðµ¨ÀÔ´Ï´Ù.
# capture frames from the camera
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
image = frame.array
gray = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale (gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle (image, (x, y), (x + w, y + h), (255, 0, 0), 2)
roi_gray = gray [y: y + h, x: x + w]
roi_color = image [y: y + h, x: x + w]
if len(eyes) > 0:
camera.start_preview()
camera.annotate_text = 'WARNING!'
eyes = eye_cascade.detectMultiScale (roi_gray)
for (ex, ey, ew, eh) in eyes:
cv2. rectangle (roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)
Á¦°¡ ¼öÁ¤ÇÑ ºÎºÐÀ» Àú·¸°ÔÇϸé ÅؽºÆ®°¡ ¶ã ±î¿ä?
±×¸®°í 5V¿Í GND ÀÌ¿ëÇØ ºÎÀú¸¦ ²ÈÀ¸´Ï ºÎÆÃÀ» ¾ÈµÇ°í °ËÀºÈ¸é¸¸ ¶å´Ï´Ù. ¿Ö ÀÌ·±°É±î¿ä?