이제 드디어 인식된 얼굴에 이름이 나타나게 할 차례다
먼저 camcv_vid1.cpp 이 소스를 다운받자.
그리고 cmakelists.txt를 수정해야 된다.
이번 소스파일은 c가 아닌 c++이므로 이름을 굳이 수정하지 않아도 된다.
(어차피 cmakelists.txt에서 추가 할 것이라서)
sudo nano cmakelists.txt
add_executable에서 camcv.c를 지우고 대신 camcv.vid1.cpp를 넣어주자
저장하고 나온 후 camcv_vid1.cpp를 수정하자
sudo nano camcv_vid1.cpp
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/haarcascades/haarcascade_frontalface_default"; 로 수정
- ---------------------------------------------------------------------------------------------------
얼굴인식을 위한 opencv라이브러리 위치및 사용 라이브러리
추가!!-------------------------------------------------------------------------------------------------------------
face cascade model not loaded : /usr/share/opencv/haarcascades/haarcascade_frontalface_default 오류발생시
- fn_haar = "/usr/share/opencv/lbpcascades/lbpcascade_frontalface.xml
로 바꿔보세요.(헛둘셋둘님이 알려주셨네요.)
---------------------------------------------------------------------------------------------------------------------
이건 이전 chapter에서도 했었던 거 아래 에러가 나는 사람들만
---------------------------------------------------------------------------------------------
mmal: main: Failed to create camera component
mmal: Failed to run camera app. Please check for firmware updates
---------------------------------------------------------------------------------------------
Line 764
- ---------------------------------------------------------------------------------------------------
- else if (!raspipreview_create(&state.preview_parameters))
- =>else if ( (status = raspipreview_create(&state.preview_parameters)) != MMAL_SUCCESS) 로 수정
- ---------------------------------------------------------------------------------------------------
만약 /usr/share/opencv/ 안에 haarcascades 폴더가 없다면 opencv2.3.1을 다운받아
압축을 풀고 /opencv_2.3.1/data/haarcascades/ 안의 파일들을 /usr/share/opencv/haarcascades/ 안에 복사해 넣는다.
OpenCV_2.3.1 <<이 곳에서 다운로드한다.
이제 얼굴에 자신의 이름이 나오게 하기 위해서는 이름과 사진의 DB정보가 필요하다.
sample file << 이곳에서 받아도 되고 자신이 만들어도 된다.
위 링크가 안되면 첨부파일이용^^
다운 받은 파일들을 /home/pi/camcv/others 에 복사한다.
다운 받아보면 내충 아래와 같다.
한사람당 10장의 사진(100*100) 총 400장
사람과 이름을 링크해주는 ID LIST (csv.txt)파일 1개
파일의 내용은 아래와 같다.
위 그림의 마지막 숫자가 ID를 의미한다.(자세한건 소스에서~)
그림과 숫자를 매칭 시켜주자
그리고 소스를 편집
sudo nano camcv_vid1.cpp
Line 65
이곳에 ID와 이름이 define 되어있다.
즉 csv.txt에서 사진 이름과 ID를 매칭 시키고, 소스에서 그 ID 번호와 이름을 매칭 시킨다.
Line 661
그리고 이 곳에서 define과 화면에 나오게 될 text(이름)을 넣어준다.
참고로 사진 파일이 많으면 정확도는 높아지나 실행 속도는 저하된다.
sudo cmake .
sudo make
camcv.c를 지우고 camcv_vid1.cpp로 컴파일해서 바뀐 걸 확인할 수 있다.
이제 실행해 보자
./camcv others/csv.txt l 5500
실행을 하면 사람들 list가 불려와지는 걸 확인할 수 있다.
그리고 카메라에 얼굴이 인식되면 list에 있으면 이름이 나오고, 없으면 나오지 않는 걸 확인 할 수 있다.
TEST하면서 사진을 넣고 찍진 않아서 이름이 나온 걸 캡처를 못했다
.
캡처된 사진은 다음에~
'Projects > OpenCV for RaspberryPi' 카테고리의 다른 글
Raspberry Pi2 picam에서 openCV 적용하기 2 (24) | 2015.04.23 |
---|---|
Raspberry Pi2 picam에서 openCV 적용하기 1 (4) | 2015.04.22 |
Raspberry Pi 에서 Picam을 이용한 OpenCV 4 (0) | 2015.02.12 |
Raspberry Pi 에서 Picam을 이용한 OpenCV 3 (3) | 2015.02.12 |
Raspberry Pi 에서 Picam을 이용한 OpenCV 2 (0) | 2015.02.12 |