📌 Intro
Jetson Xavier argx에서 웹캠을 사용하는 방법과 해상도를 변경하는 방법에 대해 정리한다.
📌 웹캠 연결 확인
usb로 연결된 웹캠을 사용하기 위해서는 다음과 같은 명령어로 카메라가 잘 연결되었는지 확인해줘야한다.
v4l2-ctl --list-devices
실행 결과 웹캠이 잘 연결되어 있는 것을 확인할 수 있다. 그리고 연결된 웹캠의 번호는 0번이다. 만약 여러개의 웹캠이 연결되어 있다면 번호가 증가하게 된다.
만약 명령어가 실행되지 않는다면 아래 명령어를 사용하여 다운받도록 하자.
sudo apt-get install v4l-utils
다음과 같은 명령어로 지정한 카메라(현재 명령어에서는 video0)의 파라미터의 값을 확인할 수 있다.
v4l2-ctl -d/dev/video0 --list-ctrls
만약 위에서 확인한 파라미터 값을 변경하고 싶다면 다음과 같이 명령어를 사용하면 된다.
v4l2-ctl -d/dev/video0 -set-ctrl=focus_auto=0
v4l2-ctl -d/dev/video0 -set-ctrl=focus_absolute=0
웹캠에서 지원하는 해상도를 확인하기 위해서는 다음과 같은 명령어를 사용하면 된다.
v4l2-ctl -d/dev/video0 --list-formats-ext
실행 결과의 일부 사진이다. 웹캠에서 지원하는 해상도는 640x480, 160x90, 160x120 ... 등이 있다.
📌 python 코드
위 코드를 이용하여 cv2를 통해 웹캠을 오픈하고 확인할 수 있다.
6, 7번 라인은 웹캠의 해상도를 변경하여 출력하는 코드다.
웹캠의 해상도를 변경하지 않고 실행하면 기본 해상도는 (2034, 1536)을 가져 fps가 굉장히 낮았다.
fps를 올리기 위해 해상도를 임의로 변경했을 때는 읽어온 이미지의 width, height가 모두 0이 되면서 오류가 났다. 아마 이미지 자체를 읽어오지 못한 것 같다.
v4l2-ctl -d/dev/video0 --list-formats-ext
명령어를 통해 지원 가능한 해상도(640, 360)를 넣어주었더니 오류없이 실행되었다.
실행결과 비교
- 해상도 조절 전
이미지이기 때문에 보이지는 않지만 fps가 굉장히 낮고 영상이 화면 전체를 채운 것을 볼 수 있다.
- 해상도 조절 후
fps가 거의 실시간이라고 봐도 무방할 정도로 빨라졌고, 영상의 크기가 작아진 것을 볼 수 있다.