본문 바로가기
Projects/OpenCV for RaspberryPi

OPENCV RASPBERRY PI3 (STRETCH) 6 - 얼굴인식

by Answer Choi 2017. 9. 18.
반응형



이제 드디어 앞서 만든 비디오와 opencv로 얼굴인식을 할 차례입니다.


만약 usr/share/opencv/haarcascades에 opencv library가 없다면 아래서 받아줍니다.


OpenCV 다운로드


위 링크에서 OpenCV를 다운받아 usr/share/opencv/haarcascades로 복사합니다.


OpenCV에서 사용할 새로운 camcv를 아래 링크를 통해 다운로드합니다.


camcv_vid1.cpp파일 다운로드 


다운받은 파일을 라즈베리파이의 camcv폴더로 복사하세요.



파일이 바뀌었으니 CMakeLists.txt파일을 수정해야 합니다.


1
sudo nano CMakeLists.txt
cs



기존 camcv.c 대신 camcv_vid1.cpp로 변경한 후 저장하고 나오세요.


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


샘플사진 다운로드


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



이제 build를 해보겠습니다.


1
2
sudo cmake .
sudo make
cs


만약 아래 에러가 발생하면 contrb.hpp파일을 변경해줘야 합니다.



contrib.hpp 다운로드


다운받은 파일을 /usr/include/opencv2/contrib/contrib.hpp 파일을 교체해 주세요.



이제 다시 빌드하세요.

1
2
sudo cmake .
sudo make
cs



others 폴더에 있는 사진들을 임의로 프린트해서 준비합니다.


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


위와 같이 명령어를 넣으면 카메라가 시작되는데 아무래도 사진이 많아 시간이 오래걸립니다.


 csv.txt파일에서 사진을 좀 줄이면 로딩속도가 빨라집니다.


뒤의 숫자는 정확도입니다.


너무 높으면 인식이 잘안되고, 낮으면 오인식이 많습니다.



사진과 이름을 바꾸는 방법입니다.


csv.txt 파일을 열어보시면


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


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


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


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


그리고 Line 661 로 가보시면


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


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


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

반응형

인기글