본문 바로가기
개발 관련 지식/잡동사니

[OpenCV] VideoCapture 객체 Codec 변경

by rahites 2024. 7. 22.

Python에서 OpenCV 패키지를 활용하여 VideoCapture 객체 Codec을 변경하려 하였으나 잘 바뀌지 않는 문제가 발생하였다.

코드상으로 문제가 없어 왜 발생하는 오류인지 고민하다 알게된 해결책을 기록하려 한다.


문제 상황

VideoCapture 객체에서 사용할 수 있는 set 메소드를 활용하여 fourcc를 MJPG로 바꾸려 하였으나 정상적으로 fourcc가 바뀌지 않음

 

 

해결방안

VideoCapture 객체에 대해 set을 해줄 때의 순서 문제였다.

 

내가 실행했던 코드를 예시로 들면

import cv2

camera = cv2.VideoCapture(0)

camera.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('M','J','P','G'))
camera.set(cv2.CAP_PROP_FRAME_WIDTH,1280)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT,720)

이런식으로 fourcc를 width와 height 사이즈보다 먼저 변경해줄 경우 원하는대로 코덱이 바뀌지 않는다.

 

즉 아래와 같이 코덱 변경 -> width/height 변경 순서가 아니라 width/height 변경 -> 코덱 변경 순으로 진행하여야 정상적으로 코덱이 변경된다.

import cv2

camera = cv2.VideoCapture(0)

camera.set(cv2.CAP_PROP_FRAME_WIDTH,1280)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT,720)
camera.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('M','J','P','G'))

 

 

참고자료

https://stackoverflow.com/questions/62358230/changing-codec-of-webcam-is-not-possible-using-opencv-python

 

Changing codec of webcam is not possible using OpenCV/Python

I am using windows 10 and python 3.7 / OpenCV4 and a Logitech C922 webcam. While the cam seems to provide 30 fps using the windows camera app, i can not get more than 5-6 fps using OpenCV. Resoluti...

stackoverflow.com

댓글