본문 바로가기
Projects/OpenCV for RaspberryPi

OPENCV RASPBERRY PI2 (JESSIE) 5 -얼굴인식

by Answer Choi 2016. 1. 27.
반응형

앞에서 picam으로 동영상을 촬영하는 것 까지는 했습니다.


이제 본격적인 얼굴인식을 해보겠습니다.


먼저 opencv-2.3.1을 다운받습니다.


opencv 2.3.1 다운로드


다운로드가 안되면 여기서 다운로드


다운받은 파일을 압축을 풀어 폴더 안의 OpenCV-2.3.1/data/harrcascades폴더를

usr/share/opencv/haarcascades로 복사합니다.


SAMBA 이용시


Terminal 이용시



파일의 권한설정을 바꿔줍니다.



압축을 푼 후 /usr/share/opencv/haarcascades로 이동합니다.



압축을 푼 haarcascades폴더의 파일들을 복사해 옵니다.


이제 새로운 실행파일을 하나 다운로드 합니다.


camcv_vid1.cpp 보기


그리고 cmakelists.txt를 편집기를 통해 수정해줍니다.


1
sudo nano CMakeLists.txt
cs


camcv.c 대신 camcv_vid1.cpp 로 바꿔줍니다.


이제 camcv_vid1.cpp를 수정합니다.


1
sudo nano camcv_vid1.cpp
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Line 59
----------------------------------------------------------------------------------------------
#include "/home/pi/pierre/libfacerec-0.04/include/facerec.hpp"
=>#include "/home/pi/camcv/libfacerec/include/facerec.hpp"로 수정
----------------------------------------------------------------------------------------------
face recognition API의 경로이다
 
Line 681
---------------------------------------------------------------------------------------------------
fn_haar = "/usr/share/opencv/haarcascades/lbpcascade_frontalface.xml";
=>fn_haar = "/usr/share/opencv/lbpcascades/lbpcascade_frontalface.xml"; 로 수정
---------------------------------------------------------------------------------------------------
얼굴인식을 위한 opencv라이브러리 위치및 사용 라이브러리
 
Line 764
---------------------------------------------------------------------------------------------------
else if (!raspipreview_create(&state.preview_parameters))
=>else if ( (status = raspipreview_create(&state.preview_parameters)) != MMAL_SUCCESS) 로 수정
---------------------------------------------------------------------------------------------------
cs



여기까지 수정된 파일 다운로드 


이제 얼굴에 대한 DB가 필요한데 일단은 테스트용으로 아래 파일을 받아주세요.


샘플사진 다운로드


첨부된 파일을 다운받아 /home/pi/camcv/others/에 복사해줍니다.


1
sudo zip 100x100.zip
cs



압축을 풀어보시면 400개의 그림파일과 1개의 txt파일이 있습니다.


csv.txt 파일을 열어보시면


위와 같은 구조인데 ";"를 기준으로 왼쪽은 사진파일명이고, 오른쪽은 ID입니다.


사진과 카메라를 비교해서 이 ID값으로 이름을 가져오게 됩니다.


다시 소스(camcv_vid1.cpp)로 가셔서 Line 65로 가보시면


여기에 ID가 define되어 있습니다.


그리고 Line 661 로 가보시면


모니터로 표시해 줄 이름을 적는 곳이 나옵니다.


아까 다운받은 사진을 보시면 사람마다 10장씩 찍어놓았는데 사진의 수가 많아지면 정확도가


높아집니다만, 실행속도는 저하됩니다.


이제 build를 해보겠습니다.


1
2
sudo cmake .
sudo make
cs


혹시나 make중 아래의 에러가 발생한다면~



contrib.hpp 보기


contrib.hpp 다운로드


위의 파일을 다운받으신 후 /usr/include/opencv2/contrib/contrib.hpp 파일을 교체해 주세요




이제 빌드한 후 실행하시면 openCV 카메라가 켜집니다.


파일이 많은관계로 시간이 오래걸리니 파일을 몇개만 간추려도 됩니다.


1
./camcv others/csv.txt l 5500
cs







소스상에서 400장의 사진을 모두 Natacha로 설정해서 Natacha만 400장 있다고 나오는 군요.



만약 id가 뜨지 않는다면 opencv를 실행할 때 파라메터 젤 뒤의 숫자를 좀 줄여주세요.


그럼 인식하는 알고리즘이 좀 더 간단해집니다만, 다른사람으로 인식할 확률도 많습니다.



위와같이 숫자를 너무 줄여버리면 다른사람으로 인식하게 됩니다.




반응형

인기글