2. Make a camcv
2-1 Copy to another directory
cd
mkdir camcv
cd camcv
cp -r /opt/vc/userland/host_applications/linux/apps/raspicam/* .
2-2 Make a camcv file
raspistill change to camcv
mv raspistill.c camcv.c
If you typing command ls, you can see camcv.c file instead of raspistill.c file.
2-3 change cmakelists.txt
sudo nano cmakelists.txt
Clear all and copy and paste this text.
-------------------------------------------------cmakelists.txt-------------------------------------------------------
- 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/libGLESv2.so /opt/vc/lib/libEGL.so )
ADD------------------------------------------------------------------------------------------
If you can see below error, modify target_link_libaries in cmakelists.txt!!
/usr/bin/ld: CMakeFiles/camcv.dir/camcv.c.o: undefined reference to symbol 'sem_post@@GLIBC_2.4'
//lib/arm-linux-gnueabihf/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: ld returned 1 exit status
CMakeFiles/camcv.dir/build.make:392: recipe for target 'camcv' failed
make[2]: *** [camcv] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/camcv.dir/all' failed
make[1]: *** [CMakeFiles/camcv.dir/all] Error 2
Makefile:72: recipe for target 'all' failed
make: *** [all] Error 2
//lib/arm-linux-gnueabihf/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: ld returned 1 exit status
CMakeFiles/camcv.dir/build.make:392: recipe for target 'camcv' failed
make[2]: *** [camcv] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/camcv.dir/all' failed
make[1]: *** [CMakeFiles/camcv.dir/all] Error 2
Makefile:72: recipe for target 'all' failed
make: *** [all] Error 2
- 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/libGLESv2.so /opt/vc/lib/libEGL.so libpthread.so libm.so)
----------------------------------------------------------------------------------------------
save and exit.
2-4 Cmake
cmake .
2-5 Make
make
try to take a picture using camcv command.
./camcv -t 1000
PS. If make a mistake in cmakelists.txt, pi make a error. When error you retry!!
2-6(optional) Delete unused code.
Think RPI recomend delete to below delete list.
sudo nano camcv.c (or using word pad)
---------------------------------------------------Delete list----------------------------------------------------------
static void dump_status(RASPISTILL_STATE *state)
static int parse_cmdline(int argc, const char **argv, RASPISTILL_STATE *state)
static void display_valid_parameters(char *app_name)
static MMAL_STATUS_T add_exif_tag(RASPISTILL_STATE *state, const char *exif_tag)
static void add_exif_tags(RASPISTILL_STATE *state)
static void store_exif_tag(RASPISTILL_STATE *state, const char *exif_tag)
--------------------------------------------------------------------------------------------------------------------------2-7 add function(save to file)
Search to default_status(&state); in camcv.c and add to below line
- state.filename=”foobar.jpg”;
save and exit.
cmake .
make
./camcv -t 1000
If succeed to take a picture,save to foobar.jpg file.
똑같이 따라해봣는데 libfacerec 디렉토리가 생성되지않고
ReplyDeleteCmake도 되지 않습니다.
정보창엔 project에 오류가 납니다.
cmake package 설치하셨나요?
Deletesudo apt-get install cmake 하시면 설치되는데 안되어있으면 설치하고 해보세요~
넵 설치 했습니다.
Delete그 올려주신 글과 다른점을 말씀드리자면
CMakeLists.txt에 /home/pi/libfacerec 라는 경로가 있는데요
저는 /opt/vc/userland/host_applications/linux/raspicam 이 경로에도 libfacerec 라는 경로가 없고 이것을 /home/pi/camcv 로 옮겨서 작업하고 있습니다.
일단 올리신 글대로 따라해서 cmake . 를 한 결과\
CMake Error : Error in cmake code at
//home/pi/camcv/CMakeLists.txt:2:
Parse error. Expected a command name, got unquoted argument with text " project ".
-- Configuring incomplete, errors occurred!
이런 화면이 나옵니다.
cmake 에러나는 건 2번째 라인인 project(camcv) 에서 나는데 argument가 잘못 되었다고 뜨네요. 한번 확인해 주시구요.
Deletelibfacerec폴더는 제가 지금 raspberryPi가 없어서 내일 확인해 드릴께요^^
확인해 보셨나용??
Deletelibfacerec 폴더는 없는게 맞구요. 아마 이 다음스텝에서 라이브러리 추가하는데 그것땜에 폴더만 미리 만들어 놓는거 같네용.
cMakeLists.txt 파일만 수정해서 해보시고 안되면 말씀해주세요.
답글 감사합니다.
Delete2번째 라인인 project 에서 문제가 있는 것은 알겠으나 어떻게 고쳐야 할지 모르겠습니다.
project가 인용 부호로 둘러싸여있지 않다는 오류가 계속 나오는데 어떻게 고쳐야 하나요?
cmakelists 파일 내용 다 지우시고 다시한번 복사해주세요. 아마 괄호가 짝이 안맞던지 아님 중간에 스펠링이 틀렸던지 그런거 같은데...
Delete기존폴더 다 지우시고 step2부터 다시해보시길 권장드려요
학교 시험 때문에 늦게 하게되었습니다.
Delete다시 처음부터 하니까 작성이 되네요
처음에는 GUI 에서 작성을 했습니다만
CLI에서 작성을하니까 되네요
os ui가 관계가있나요? 아니면 그냥 오타가 났었던건가?
되셨다니 다행이네요^^
Delete아마 오타가 나지 않았나 싶어요~ㅎ