라즈베리파이 64bit 환경에서 libcamera 사용 A to Z

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

 

Raspberry Pi Documentation - Camera

The official documentation for Raspberry Pi computers and microcontrollers

www.raspberrypi.com

 

블로그를 찾아보는 이유는 공식문서를 좀 더 편하게 보기 위함이라는 걸 알기에,

중요한 부분만 발췌해서 정리해보려고 한다.

 

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

 

Raspberry Pi Documentation - Camera

The official documentation for Raspberry Pi computers and microcontrollers

www.raspberrypi.com

 

사실 좀 복잡해서 나도 시도하다 말았기 때문에 공식문서를 읽고 찬찬히 해보는 걸 추천한다.

이 공식문서가 그냥 os나 환경별로 탭을 나눠논게 아니라 os 별로 줄글로 늘여놔서 그냥 무지성으로 복사하다간 필요없는 패키지 까지 설치하면서 라즈베리파이가 맛이 갈 수 있으니.. 영어를 해석하면서 설치하는 걸 추천한다.

 

5. 드디어 실행.

여기까지 왔다면 이제 카메라를 사용할 준비가 다 되었다.

// cctv처럼 계속 보기
libcamera-hello -t 0

// 사진 촬영
libcamera-jpeg -o test.jpg

 

성공했다면 테스트는 끝!

조도나 노출, 셔터 스피드 같은 것도 조절할 수 있나보다.

난 카메라를 잘 몰라서 그냥 기본으로 하는 걸로~ 혹시 관심 있다면 아래 링크에서부터 천천히 읽어보는 걸 추천한다.

https://www.raspberrypi.com/documentation/accessories/camera.html#libcamera-jpeg

 

Raspberry Pi Documentation - Camera

The official documentation for Raspberry Pi computers and microcontrollers

www.raspberrypi.com


3. 여담

라즈베리파이만 그런건진 모르겠지만, 임베디드 쪽은 패키지 설정이 너무너무 중요한 것 같다.

효율적인 세팅을 가져가기 위해서 알아야할 사전지식이 많다고 해야하나.. 그리고 업데이트가 너무 자주되어서 지금 구글에 나와있는 자료들 중에 거의 70%가 쓸모 없는 것 같다. 다 예전 레거시 코드들로 실행하면 안되는 것들 투성이다.

 

이 포스트를 어떤 경로에서 접했을 지 모르겠지만, 안된다면 공식문서를 천천히 읽어보고 세팅을 공부해가는 게 좋을 것같다. 또, 카메라가 개복치급으로 약해서 하드웨어 고장인지 아닌지도 판별하는 다양한 방법들이 있다.

(보통 다 연결했는데 unicam is not detected가 나오면 하드웨어 고장이다.)