728x90
1. Haarcascades 설치(다운?)
Haarcascades 을 사용하기 위해 필요한 파일 하나만 다운받아도 되고, 전체를 다운받아서 옮겨도된다. 후에 다른 것을 더 써볼거 같아서 전체를 다운 받았다. 프로젝트 폴더를 하나 만들고 폴더 안에서 git clone하면 전체가 복제된다.
$ git clone https://github.com/opencv/opencv.git
복제된 폴더내에서 인식할때 쓰이는 여러 데이터를 찾을수 있다(opencv/data/haarcascades/).
이번엔 얼굴과 눈 인식만 사용할 것이기 때문에 두개만 복사하자.
haarcascade_frontalface_default.xml, haarcascade_eye.xml
이 두 파일을 python 프로그램과 같은 경로에 둔다.
2. Python 프로그래밍
# simpleCamTest.py
import numpy as np
import cv2
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eyeCascade = cv2.CascadeClassifier('haarcascade_eye.xml')
def detect(gray,frame):
faces = faceCascade.detectMultiScale(gray, scaleFactor=1.05, minNeighbors=5,minSize=(100,100),flags=cv2.CASCADE_SCALE_IMAGE)
for(x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
face_gray=gray[y:y+h,x:x+w]
face_color=frame[y:y+h,x:x+w]
eyes=eyeCascade.detectMultiScale(face_gray,1.1,3)
for(ex, ey,ew,eh) in eyes:
cv2.rectangle(face_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
return frame
video_capture = cv2.VideoCapture(0)
while(True):
_, frame =video_capture.read()
#frame = cv2.flip(frame,-1)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
canvas=detect(gray,frame)
cv2.imshow('canvas',canvas)
if cv2.waitKey(30) == 27: #esc
break
video_capture.release()
cv2.destroyAllWindows()
줄마다의 설명은 여기를 참고해라
3. 에러
1) 다음과 에러가 뜬다면 같은 경로상에 인식 데이터가 없는것이다.
cv2.error: OpenCV(4.2.0) /home/pi/opencv/opencv-4.2.0/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eyeCascade = cv2.CascadeClassifier('haarcascade_eye.xml')
여기에서 주소를 정확하게 입력해주거나 같은 경로상에 옮겨주면 해결된다.
2) 인식 문제
내 얼굴을 들이밀어보니 콧구멍도 눈으로 인식되는 문제가 발생되었다. 아직 해결못했다....
'STUDY > Raspberry Pi' 카테고리의 다른 글
라즈베리파이 터미널에서 Youtube 재생 (1) | 2020.12.22 |
---|---|
카메라를 사용한 유튜브 스트리밍 (1) | 2020.12.22 |
실시간 얼굴 인식 (1) OpenCV 설치 (0) | 2020.12.22 |
라즈베리파이 유용한 정보 모음 (0) | 2020.12.22 |
실시간 얼굴 인식 (0) (0) | 2020.12.20 |