프로그래밍/작은 메모

v4l2 USB 카메라 노출 시간, 해상도 설정

satnurn 2025. 6. 10. 10:53
반응형

 # 환경

 - Ubuntu 22.04

 - Opencv 4.5.4

 

 

 # USB 카메라 노출시간과 해상도 변경

 - 현재 사용 중인 USB 카메라의 fps가 낮아 속도를 증가시키고자 노출시간과 해상도를 변경해봄.

 

 1) 노출시간 변경 

 - 일반적으로 노출 시간 측정은 OpenCV를 기반으로 아래와 같이 확인함.

double exposure = cap.get(cv::CAP_PROP_EXPOSURE);
std::cout << "Current exposure: " << exposure << std::endl;

 

- 카메라 목록 확인

$ v4l2-ctl -d /dev/video0 --list-ctrls

 

- 노출 값 수동 설정 모드

$ v4l2-ctl -d /dev/video0 --set-ctrl=exposure_auto=1

 (또는 $ v4l2-ctl -d /dev/video0 --set-ctrl=auto_exposure=1 카메라 목록 참고)

 

- 노출 값 수정 명령어도 있으나 OpenCV를 통해 수정함.

$ v4l2-ctl -d /dev/video0 --set-ctrl=exposure_absolute=50 

    cap.set(cv::CAP_PROP_EXPOSURE, 100);

 

 - 노출 값 자동 설정모드 변경(원래대로)

$ v4l2-ctl -d /dev/video0 --set-ctrl=exposure_auto=3 

 

 2) 해상도 변경

 - USB 카메라가 지원하는 해상도 목록 확인

$ v4l2-ctl -d /dev/video0 --list-formats-ext

 기본 우선 순위는 보통 MJPG, YUYV 순임.

 (MJPG는 압축/해제 방식으로 약간의 화질 저하, YUYV 방식은 대역폭이 크고 화질은 보존하며 프레임이 떨어짐)

 

 - 현재 카메라 포맷 확인

 $ v4l2-ctl -d /dev/video0 --get-fmt-video

 

 - 포맷 변경

 $ v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=480,pixelformat=MJPG

 여기서 해상도를 변경하면 카메라에서 받는 해상도도 변경됨.

 

결론, 노출 시간을 변경하면 프레임 속도는 올라가지만 말 그대로 노출 시간이 적어지기 때문에 카메라 이미지가 어두워짐.

 사용한 USB 카메라의 해상도는 defaults 값이 640x480으로 설정되어 있었기 때문에 해상도를 더 낮추게되면 fps는 증가 되지만 해상도가 사용하고자 하는 것보다 낮아서 사용 불가함. 이후 다른 곳에 사용하기위해 정리.

 

 

 

반응형