Knowhow/Vision

Opencv webcam resolution control

침닦는수건 2022. 6. 13. 11:45
반응형

 

opencv로 웹캠의 해상도를 변경하고 싶을 때, 보통 아래와 같은 코드로 변경한다.

import cv2

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)

그런데 위 코드가 동작하지 않을 때가 있는데 그 이유는,

1. 카메라가 지원하지 않는 해상도일 경우,

2. 카메라가 지원하는 해상도이지만, pixel format이 안 맞을 경우

 

1. 카메라가 지원하지 않는 해상도일 경우는 당연히 안된다. 

2. 카메라가 지원하는 해상도이지만 그래도 안되는 경우는 pixel format이 YUYV인지, MJPG인지 확인할 필요가 있다. 

 

uvcdynctrl -f

 

Linux일 경우, 위 명령어를 쳐보면 아래와 같이 현재 사용 가능한 웹캠의 해상도가 보일텐데 자세히 보면 MJPG pixel format일 때만 1920x1080을 지원하는 것을 볼 수 있다.

 

현 pixel format이 YUYV일 경우, 해상도 변경이 되지 않는다. 따라서 pixel format을 변경해주어야 함.

cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))

이후에 set 명령으로 원하는 해상도(+ fps까지)로 변경하면 된다.

반응형