반응형
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까지)로 변경하면 된다.
반응형
'Knowhow > Vision' 카테고리의 다른 글
Obj file의 manifold/non-manifold 구분 (0) | 2022.06.30 |
---|---|
3D mesh voxelization (0) | 2022.06.17 |
Opencv large FoV image undistortion (0) | 2022.06.16 |
Opencv multi webcam 사용 시 인식 확인 (0) | 2022.06.13 |
Opencv 광각 (Large FoV) 카메라 intrinsic calibration (0) | 2021.11.22 |