행복한 하루

라즈베리파이 제로 프로젝트(9) – CMOS 카메라 이용해보기 – OpenCV 얼굴인식 소스 실행 (3-2) 본문

RaspberryPi/Raspberry Pi Zero

라즈베리파이 제로 프로젝트(9) – CMOS 카메라 이용해보기 – OpenCV 얼굴인식 소스 실행 (3-2)

변화의 물결 2020. 11. 25. 20:59

 

 

안녕하세요.

 

  이전 강좌처럼 OpenCV를 문제없이 잘 설치했다면, 파이썬을 통해서 간단한 얼굴인식 프로그램을 실행시켜보도록 하겠습니다. 조금 오래된 소스이지만 간단한 테스트와 소스 확인용으로는 괜찮지 않을까 합니다.

 

  먼저, 내용을 알려드리면 사실 이전 강좌의 컴파일이 소용없게 되었습니다(?).

  테스트하려던 소스가 에러가 발생한다기보다는 OpenCV 버전이 라즈베리파이 제로 버전 때문인지, OpenCV 버전 때문인지 정확하게 알지는 못했지만, makefile이 생성되지 않아서 이전에 작업했던 내용이 되지 않았습니다.

  그럼 결론은….

  최신 4.5 버전이 빌드되지 않아서 패키지 형태로 받아서 OpenCV 3.2 버전으로 실행하면 작동되었습니다.

 

  우선 어떤 빌드하기 위해서 어떤 작업을 했는지 보면

 

1. OpenCV 라이브러리 컴파일 작업

  1) 이전 강좌에서 최신 OpenCV 소스를 컴파일하기 (실패)

  - 이전 강좌 내용처럼 작업하였다면 cmake도 문제없이 되었고, 빌드도 100%로 make install까지 된 것 아니냐고 할 수도 있지만, 문제는 파이썬 소스를 실행시켜보면 에러가 발생하는 것을 알 수 있습니다.

  

  아직 해결 찾지 못해서 이 방법으로 진행 불가했습니다. ( 다른 외국 분들의 위의 내용으로 문의하고 있는 듯합니다.)

  https://stackoverflow.com/questions/64955268/opencv4-cant-initialize-gtk-backend

  위의 글에 문의에 해결책이 나오면 가장 좋은 해결책이 되리라 생각합니다.

  

  2) Installing OpenCV on your Raspberry Pi Zero 사이트 참조하여 설치 진행  (실패)

  https://www.pyimagesearch.com/2015/12/14/installing-opencv-on-your-raspberry-pi-zero/

 

  - 링크의 강좌가 제로 버전으로 되어 있고 순서대로 되어 있어 쉽게 설치를 따라 할 수 있습니다. 그런데, 마지막 cmake에서 videoio.h: No such file or directory 등 없다고 에러를 줍니다.

  그래서 소프트 링크로 video, avformat 등 header 파일로 연결시켜주었지만, cmake 에러로 실패

 

  3) Raspberry Pi 3에 Extra Module(contrib) 포함하여 OpenCV 4.5.0 설치하는 방법 (실패)

    https://webnautes.tistory.com/916

 

  - 국내 사이트이고 라즈베리파이 3, OpenCV4.5 버전으로 작업한 내용들이 있습니다. 기존 버전 삭제하는 방법 등 잘 알려주고 있습니다. 그런데 여기서 cmake 옵션들에 보면 VFPV3, NEON 등 제로에서는 지원하지 않기 때문에 옵션들을 OFF로 바꿔주어야 합니다.

  이렇게 바꿔 주었지만 여기서도 위의 같이 에러가 발생하여 진행할 수 없었습니다.

 

 

 

 

  4) repository에서 다운로드받아 설치 (성공)

  - 위의 내용으로 컴파일해서 기존의 얼굴인식 소스를 실행시켜보려고 했는데, 성공하지 못했습니다. 제가 아직 잘 몰라서 문제들을 해결 못해서 그럴 것이라고 생각됩니다. 해결책을 아시는 분은 댓글 부탁드립니다.

 

  소스를 컴파일하지 말고

 “sudo apt install python3-opencv” 로 설치하면 손쉽게 설치되고 경로 등 문제 등 해결되었습니다. 진작에 이렇게 사용했으면 하루 시간을 벌었을 텐데 말이죠. (그러나 OpenCV에서 필요하다고 하는 라이브러리는 설치하실 것을 권장드립니다.)

 

  추가 모듈이 더 있는지 확인하려면

  sudo apt list *opencv*  입력하시면 됩니다.

 

  무사히 설치가 끝났다면 이제 원격데스크톱 연결 혹은 VNC로 라즈베리파이에 접속해서 실행을 시켜보겠습니다.

 

  만약 바로 접속이 되지 않는다면 아래 접속하기 편을 확인해 보기 바랍니다.

    https://remnant24c.tistory.com/49

  

2. 인식 프로그램 실행해보기

  - 얼굴 인식 파이선 프로그램을 github에서 다운로드합니다.

pi@raspberrypi:~ $ git clone https://github.com/shantnu/FaceDetect/

pi@raspberrypi:~ $ cd FaceDetect

 

pi@raspberrypi:~/FaceDetect $ sudo python3 face_detect_cv3.py abba.png haarcascade_frontalface_default.xml 

 

  - python으로 실행시키면 CV를 import 할 수 없다고 나오면서 또 다른 에러를 발생시킵니다.     

  - face_detect.py를 실행시키면 CV 속성이 없다고 에러가 발생합니다.  그래서 아래와 같이 실행하면 abba의 얼굴을 인식하여 4 얼굴을 찾았다고 나옵니다. 그러나 DISPLAY 열 수 없다고 나옵니다.

 

 

  이것은 X11에 접근할 수 없어서 경고가 나타나는 것입니다. 그래서 한 가지 작업을 더 해줍니다. 모든 사용자가 접근할 수 있도록 허용해주는 것입니다.

 

pi@raspberrypi:~ $ sudo apt-get install x11-xserver-utils

pi@raspberrypi:~ $ xhost +

 

  위의 작업까지 했다면 화면에 이제 다시 명령어를 실행하면 abba의 얼굴을 인식한 시각적 사진을 볼 수 있습니다.

 

 

   - 테스트해 본 결과 라즈베리파이 제로에서 실시간으로 인식하기에 성능이 부족하지 않을까 생각이 들었습니다. 부팅과 처리해서 화면에 나타나는 이미지 속도 등 보면 이것으로 하기에는 현재까지로는 힘들어 보였습니다.

 

  글이 길어져서 다음에 된다면 조금 더 다루어 보도록 하겠습니다.

 

감사합니다.

 

 

“쿠팡 파트너스 활동을 통해 일정액의 수수료를 받을 수 있음”

Comments