본문 바로가기
Projects/OpenCV for RaspberryPi

OpenCV for RaspberryPi 3(Rapsbian Stretch) 3-Still Shot(스틸샷)

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



이제부터는 앞서 다운로드한 userland를 이용하여 소스를 수정합니다.


1
2
3
4
5
cd
mkdir camcv
cd camcv
cp -/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번은 스크롤을 옆으로 하시면 뒤에 소스가 많이 있습니다. 모두 복사하세요.


CMakeLists.txt 다운로드


위 파일을 다운로드하여 붙여넣으셔도 됩니다.



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 -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 -1000
 
ls
cs


카메라가 정상적으로 1초간 불이켜졌다 꺼지고 나면 ls명령어로 jpg파일이 생성된걸 확인합니다.



P.S 혹시 아래와 같은 stray error가 뜬다며??


편집기에서 수정후 make를 하면 stary error가 발생할 수 있습니다.


이게 UTF-8로 작성했는데 ANSI에서는 깨지는 것 같습니다. 


이럴경우 편집기를 ANSI모드로 해놓고 작업을 하시던지, 아니면 raspberry pi에서 직접 편집해주세요. 


저 같은 경우 samba나 putty로 편집하니 위와같은 에러가 발생하더군요;;

반응형

인기글