2022. 9. 30. 15:57ㆍ라즈베리파이
1. rapistill은 32bit에서만 쓸 수 있다.
8월까지 모든 기능을 일단은(?) 다 만들어놨는데,
문제는 카메라가 말썽이었다.
64bit에서 32bit 라이브러리를 쓸 수 없다는게 말이 안되는데, 기본 os 설치할 때 설치되는 raspistill 기능이 64bit에는 빠져있다. 문제는 이제 Google Cloud API를 사용하기 위해서는 64bit os를 써야한다는 것..ㅠ
결론적으로는 64bit 용으로 새로 설계된 libcamera라는 라이브러리를 사용해야하고, 공식문서에도 그렇게 안내되어 있다.
https://www.raspberrypi.com/documentation/accessories/camera.html
블로그를 찾아보는 이유는 공식문서를 좀 더 편하게 보기 위함이라는 걸 알기에,
중요한 부분만 발췌해서 정리해보려고 한다.
2. libcamera를 쓰기 위한 여정
1. 레거시 카메라 설정 켜기
sudo raspi-config
[Interface Options] - [Legacy Camera]를 켜준다.
[Advanced Options] - [Glamor]를 켜준다.
아래 설정을 켜줘야 나중에 libcamera로 GPU 관련된 연산처리를 가속해서 에러가 나지 않는다.
그리고 나서 reboot!
2. 카메라의 종류 파악
당신이 가지고 있는 카메라가 어떤 카메라 인지에 따라 설정 해줘야하는게 다르다.
아마 산 카메라의 브랜드를 쳐보면 호환되는 버전을 공식 문서에서 제공해줄 것이다.
카메라 종류 | 넣어 줘야하는 값 |
V1 camera (OV5647) |
dtoverlay=ov5647 |
V2 camera (IMX219) |
dtoverlay=imx219 |
HQ camera (IMX477) |
dtoverlay=imx477 |
IMX290 and IMX327 |
dtoverlay=imx290,clock-frequency=74250000 or dtoverlay=imx290,clock-frequency=37125000 (both modules share the imx290 kernel driver; please refer to instructions from the module vendor for the correct frequency) |
IMX378 | dtoverlay=imx378 |
OV9281 | dtoverlay=ov9281 |
원래 우리 팀은 디바이스 마트에서 V2카메라를 사서 쓰고 있었는데,
카메라 케이블을 연장한 다음에 전원을 뽑아서 비정상 종료 시에 카메라 회로가 탈 수 있다고 한다. (다들 조심!)
아무튼 그래서 arducam이라는 사짜 브랜드의 카메라를 샀는데 공식 홈페이지에서 산 모델을 보니 V1 카메라와 호환이 되는 걸로 확인 되었다.
3. dtoverlay 기입(일단 v1 기준)
cd /boot/
sudo vim config.txt
이렇게 vim을 켜시고, 맨 아래에서 dtoverlay를 위의 표에 맞게 넣어주면 된다.
ex) dtoverlay=ov5647
(주의: = 앞뒤로 띄어쓰기 하지 말것)
4. libcamera 라이브러리 설치
나는 그냥 라즈베리파이의 카메라를 켜고 싶다는 목적으로 했기 때문에 그냥 설치를 하면 되는데,
혹 뛰어난 학구열로 스스로 환경 세팅을 해보고 싶은 사람이 있을 수 있기 때문에 방법과 링크를 넣어놓겠다.
4-1. 패키지 설치
// full OS 기준. (gui가 보이면 full OS)
sudo apt install libcamera-apps
// lite OS 기준. (cmd만 보이면 lite OS)
sudo apt install libcamera-apps-lite
왜 이 설치하는 링크를 한참 뒤에 넣어놓은 건진 모르겠지만 이렇게 하면 설치 가능하다.
4-2. 직접 github에서 클론 따오고 개발환경 설정해서 빌드해서 설치하는 방법
https://www.raspberrypi.com/documentation/accessories/camera.html#binary-packages
사실 좀 복잡해서 나도 시도하다 말았기 때문에 공식문서를 읽고 찬찬히 해보는 걸 추천한다.
이 공식문서가 그냥 os나 환경별로 탭을 나눠논게 아니라 os 별로 줄글로 늘여놔서 그냥 무지성으로 복사하다간 필요없는 패키지 까지 설치하면서 라즈베리파이가 맛이 갈 수 있으니.. 영어를 해석하면서 설치하는 걸 추천한다.
5. 드디어 실행.
여기까지 왔다면 이제 카메라를 사용할 준비가 다 되었다.
// cctv처럼 계속 보기
libcamera-hello -t 0
// 사진 촬영
libcamera-jpeg -o test.jpg
성공했다면 테스트는 끝!
조도나 노출, 셔터 스피드 같은 것도 조절할 수 있나보다.
난 카메라를 잘 몰라서 그냥 기본으로 하는 걸로~ 혹시 관심 있다면 아래 링크에서부터 천천히 읽어보는 걸 추천한다.
https://www.raspberrypi.com/documentation/accessories/camera.html#libcamera-jpeg
3. 여담
라즈베리파이만 그런건진 모르겠지만, 임베디드 쪽은 패키지 설정이 너무너무 중요한 것 같다.
효율적인 세팅을 가져가기 위해서 알아야할 사전지식이 많다고 해야하나.. 그리고 업데이트가 너무 자주되어서 지금 구글에 나와있는 자료들 중에 거의 70%가 쓸모 없는 것 같다. 다 예전 레거시 코드들로 실행하면 안되는 것들 투성이다.
이 포스트를 어떤 경로에서 접했을 지 모르겠지만, 안된다면 공식문서를 천천히 읽어보고 세팅을 공부해가는 게 좋을 것같다. 또, 카메라가 개복치급으로 약해서 하드웨어 고장인지 아닌지도 판별하는 다양한 방법들이 있다.
(보통 다 연결했는데 unicam is not detected가 나오면 하드웨어 고장이다.)
'라즈베리파이' 카테고리의 다른 글
쉘 스크립트의 간단한 사용법 for 라즈베리파이 (0) | 2022.08.11 |
---|---|
라즈베리 파이에서 google cloud api 사용기 - 1 (0) | 2022.08.04 |