이제부터는 앞서 다운로드한 userland를 이용하여 소스를 수정합니다.
1 2 3 4 5 | cd mkdir camcv cd camcv cp -r /opt/vc/userland/host_applications/linux/apps/raspicam/* . mv RaspiStill.c camcv.c | cs |
userland 소스를 camcv폴더로 옮기고 파일명을 수정합니다.
CMakeLists.txt를 수정합니다.
1 | sudo nano CMakeLists.txt | cs |
기존 내용은 모두 삭제하고 아래의 내용을 복사해 넣으세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | cmake_minimum_required(VERSION 2.8) project(camcv) SET(COMPILE_DEFINITIONS -Werror) include_directories(/opt/vc/userland/host_applications/linux/libs/bcm_host/include) include_directories(/opt/vc/userland/interface/vcos) include_directories(/opt/vc/userland) include_directories(/opt/vc/userland/interface/vcos/pthreads) include_directories(/opt/vc/userland/interface/vmcs_host/linux) include_directories(/opt/vc/userland/interface/khronos/include) include_directories(/opt/vc/userland/interface/khronos/common) include_directories(/home/pi/camcv/) include_directories(/home/pi/camcv/gl_scenes/) include_directories(/home/pi/camcv/libfacerec/include/) add_executable(camcv RaspiCamControl.c RaspiCLI.c RaspiPreview.c camcv.c RaspiTex.c RaspiTexUtil.c gl_scenes/teapot.c gl_scenes/models.c gl_scenes/square.c gl_scenes/mirror.c gl_scenes/sobel.c gl_scenes/yuv.c tga.c ) target_link_libraries(camcv /opt/vc/lib/libmmal_core.so /opt/vc/lib/libmmal_util.so /opt/vc/lib/libmmal_vc_client.so /opt/vc/lib/libvcos.so /opt/vc/lib/libbcm_host.so /opt/vc/lib/libbrcmGLESv2.so /opt/vc/lib/libbrcmEGL.so libpthread.so libm.so) | cs |
Line 15~16번은 스크롤을 옆으로 하시면 뒤에 소스가 많이 있습니다. 모두 복사하세요.
위 파일을 다운로드하여 붙여넣으셔도 됩니다.
STRECH에서는 한가지 더 수정하셔야 합니다.
1 | sudo nano RaspiTex.c | cs |
검색기능(Ctrl+w)을 사용하여 vcsm_square_open(state)를 검색합니다.
그리고 위 사진과 같이 case문을 주석처리합니다.
만약 위 부분을 수정하지 않으면
CMakeFiles/camcv.dir/RaspiTex.c.o: In function `raspitex_init':
RaspiTex.c.text+0x1100): undefined reference to `vcsm_square_open'
collect2: error: ld returned 1 exit status
CMakeFiles/camcv.dir/build.make:413: recipe for target 'camcv' failed
make[2]: *** [camcv] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/camcv.dir/all' failed
make[1]: *** [CMakeFiles/camcv.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
위와 같은 에러로 인해 컴파일이 되지 않습니다.
저장후 나와 cmake 합니다.
1 | sudo cmake . | cs |
위와같이 완료되면 make 합니다.
1 | sudo make | cs |
이제 촬영을 해봅니다.
1 | ./camcv -t 1000 | cs |
파이카메라에 1초간 불이들어왔다 꺼진다면 성공한 것입니다.
이제 촬영한 파일을 jpg로 저장해 보겠습니다.
1 | sudo nano camcv.c | cs |
검색(ctrl+w)기능을 이용하여 default_status(&state); 를 검색해주세요.
그리고 바로 아래줄에 아래 코드를 입력합니다.
1 | state.filename=”foobar.jpg”; | cs |
저장하고 나와서 cmake . 와 make를 합니다.
1 2 3 | sudo cmake . sudo make | cs |
다시 카메라를 실행합니다.
1 2 3 | ./camcv -t 1000 ls | cs |
카메라가 정상적으로 1초간 불이켜졌다 꺼지고 나면 ls명령어로 jpg파일이 생성된걸 확인합니다.
P.S 혹시 아래와 같은 stray error가 뜬다며??
편집기에서 수정후 make를 하면 stary error가 발생할 수 있습니다.
이게 UTF-8로 작성했는데 ANSI에서는 깨지는 것 같습니다.
이럴경우 편집기를 ANSI모드로 해놓고 작업을 하시던지, 아니면 raspberry pi에서 직접 편집해주세요.
저 같은 경우 samba나 putty로 편집하니 위와같은 에러가 발생하더군요;;
'Projects > OpenCV for RaspberryPi' 카테고리의 다른 글
OPENCV RASPBERRY PI3 (STRETCH) 5 - Video (0) | 2017.09.18 |
---|---|
OpenCV for RaspberryPi 3(Rapsbian Stretch) 4-OPENCV 라이브러리 (28) | 2017.09.18 |
OpenCV for RaspberryPi 3(Rapsbian Stretch) 2-PI 카메라 촬영 (0) | 2017.09.15 |
OpenCV for RaspberryPi 3(Rapsbian Stretch) 1-준비하기 (0) | 2017.09.15 |
OPENCV RASPBERRY PI3 JESSIE 6 얼굴인식 (14) | 2017.04.13 |