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'))
참고자료
'개발 관련 지식 > 잡동사니' 카테고리의 다른 글
[Pillow] 영상에 한자 텍스트 입력하기 (0) | 2024.06.28 |
---|---|
[FFPMEG] FFMPEG 간단한 명령어 정리 (1) | 2024.06.14 |
[Network] 웹페이지 네트워크 설정 변경 (0) | 2024.05.21 |
댓글