라즈베리파이 제로 카메라에 따른 해상도 비교(22Pin)
목적
VisionCube에 활용할 카메라 모듈 선택
여기서 조건은 OpenCV 환경 안에서 기본 카메라 세팅인 고해상도(예 3280X2464, 2592X1944)에서
저해상도(1024X768, 800X600)로 Reset 가능 여부
추가적으로 크게 상관 없지만 FPS 30 이상 Set 가능
환경
프로세서 : 라즈베리파이 제로 2 W
카메라 센서
- 적외선 카메라 모듈 V2, 8MP (RPI NOIR CAMERA BOARD)
- 카메라모듈 V2, 8MP (RPI 8MP CAMERA BOARD)
- Frank-S01-V1.0 OV5647 카메라 모듈
- Raspberry Pi Camera Rev 1.3
과정
우선 순서대로 편하게 1~4번으로 부르는 걸로 정의한다.
우선 라즈베리파이 공식 사이트에서 제공되는 1, 2, 4번은 기본적으로 CSI 24Pin을 사용하기 때문에 CSI 22Pin을 사용하는 Raspberry Pi Zero 2 W 환경에서는 24 to 22 변환 케이블이 추가적으로 필요하다.
이번 포스팅의 목적은 해상도 다운 사이징이다.
사실 cv::resize() 함수를 사용해도 되지만 그렇게 되면 비율 문제나, 속도, 메모리 등 다양한 방면에서 비효율적이다.
따라서 VideoCapture.set() 함수로 width, height, fps를 세팅하고 그에 맞춰 Frame을 받아 오는걸 목표로 했다.
결론부터 말하면 3, 4번 카메라는 VideoCapture.set() 함수로 세팅이 불가능하다.
(따로 프로그램을 작성해서 변경 가능한 해상도를 찾아도 2592X1944만 지원..)
이제 나머지 1, 2번이다.
우선 1, 2번(라즈베리파이 공식 카메라 Rev 2 이상)에서 내가 원하는 800X600 해상도는 잘 적용 됐다.
하지만 비디오 Streaming 도중 라즈베리파이가 재부팅 되는 현상이 발생했다.(짧으면 5초 길면 10초)
어떤 문제일까 생각 하다가 생각난게 현재 파워 공급을 컴퓨터 USB 2.0 허브를 통해 공급하고 있었는데, 혹시 전원 입력이 약해서 문제가 발생한게 아닌가 생각을 하고 5V 3A로 교체해 주었더니 정상적으로 동작했다.
우선적으로 2번 카메라(카메라모듈 V2, 8MP)를 사용하겠지만 필요에 따라 1번 카메라(NoIR 카메라)를 사용할 수도 있다.
결과
해상도 찾는 프로그램을 통해 찾은 결과 2번 카메라(카메라모듈 V2, 8MP)는 매우 많은 해상도 값을 적용할 수 있다.
(너무 많아서 복붙 불가능, 짝수 값은 거의 다 가능한 듯) (1번 카메라는 추후에 확인 예정)