본문 바로가기
Projects/OpenCV for RaspberryPi

Raspberry Pi 에서 Picam을 이용한 OpenCV Final

by Answer Choi 2015. 2. 12.
반응형



최근 업데이트된 포스트 바로가기!!(클릭!!)












예제용 사진 다운로드



이제 드디어 인식된 얼굴에 이름이 나타나게 할 차례다



먼저 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

  1. ----------------------------------------------------------------------------------------------
  2. #include "/home/pi/pierre/libfacerec-0.04/include/facerec.hpp"
  3. =>#include "/home/pi/camcv/libfacerec/include/facerec.hpp"로 수정
  4. ----------------------------------------------------------------------------------------------

face recognition API의 경로이다


Line 681

  1. ---------------------------------------------------------------------------------------------------
  2. fn_haar = "/usr/share/opencv/haarcascades/lbpcascade_frontalface.xml";
  3. =>fn_haar = "/usr/share/opencv/haarcascades/haarcascade_frontalface_default"; 로 수정
  4. ---------------------------------------------------------------------------------------------------


얼굴인식을 위한 opencv라이브러리 위치및 사용 라이브러리


추가!!-------------------------------------------------------------------------------------------------------------

face cascade model not loaded : /usr/share/opencv/haarcascades/haarcascade_frontalface_default 오류발생시


  1.  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

  1. ---------------------------------------------------------------------------------------------------
  2. else if (!raspipreview_create(&state.preview_parameters))
  3. =>else if ( (status = raspipreview_create(&state.preview_parameters)) != MMAL_SUCCESS) 로 수정
  4. ---------------------------------------------------------------------------------------------------




만약 /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하면서 사진을 넣고 찍진 않아서 이름이 나온 걸 캡처를 못했다

.

 캡처된 사진은 다음에~



반응형

인기글