파이썬(Python)/opencv

[OpenCV] Python 비디오 속성 값 불러오기(Video attributes)

끄적끄적아무거나 2022. 3. 17. 09:15
반응형

 

목차

     

     

     

     

    OpenCV 비디오 속성(Attribute)

     

    파이썬의 OpenCV의 VideoCapture 함수를 사용해서 동영상 파일을 불러 올 수 있습니다. 불러온 비디오 파일을 처리할 때 속도나 크기 처리나 후속 처리를 위해서 특정 비디오가 가진 메타 정보들을 불러와야 합니다. 

     

    불러온 비디오 파일을 사용자 지정 객체에 저장하고 객체를 get 함수를 사용해서 속성 정보를 불러 올 수 있습니다. 주요 속성 값은 아래와 같습니다. 

     

     

    • CAP_PROP_POS_MSEC : 현재 비디오 파일의 위치 (ms, timestamp)
    • CAP_PROP_POS_FRAMES : index 0 base frame
    • CAP_PROP_POS_AVI_RATIO : 비디오 파일의 상대적 위치 (0: 시작점, 1 끝점)
    • CAP_PROP_FRAME_WIDTH : 프레임 너비
    • CAP_PROP_FRAME_HEIGHT : 프레임 높이
    • CAP_PROP_FPS : Frame 속도
    • CAP_PROP_FOURCC : 코덱 형태
    • CAP_PROP_FRAME_COUNT : Video 파일의 총 프레임 개수
    • CAP_PROP_BRIGHTNESS : 밝기 정보 (카메라에만 적용)
    • CAP_PROP_CONTRAST : Contrast 정보 (카메라에만 적용) 
    • CAP_PROP_SATURATION : Saturation 정보 (카메라에만 적용)

     

     

    사용 방법>>

    비디오객체파일명.get(cv2.property명)

     

    Property는 앞서 속성으로 설명 드린 값을 입력하시면 됩니다. 아래 실제 예제를 보시면 쉽게 이해하실 수 있습니다.

     

     

     

     

    OpenCV 비디오 속성 예제

     

    예제 코드>>

    import cv2
      
    Vid=cv2.VideoCapture('car.mp4')
    
    if Vid.isOpened():
    	print("cv2.CAP_PROP_POS_MSEC: '{}'".format(Vid.get(cv2.CAP_PROP_POS_MSEC)))
    	print("cv2.CAP_PROP_POS_FRAMES: '{}'".format(Vid.get(cv2.CAP_PROP_POS_FRAMES)))
    	print("cv2.CAP_PROP_POS_AVI_RATIO: '{}'".format(Vid.get(cv2.CAP_PROP_POS_AVI_RATIO)))
    	print("cv2.CAP_PROP_FRAME_WIDTH: '{}'".format(Vid.get(cv2.CAP_PROP_FRAME_WIDTH)))
    	print("cv2.CAP_PROP_FRAME_HEIGHT: '{}'".format(Vid.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    	print("cv2.CAP_PROP_FPS: '{}'".format(Vid.get(cv2.CAP_PROP_FPS)))
    	print("cv2.CAP_PROP_FOURCC: '{}'".format(Vid.get(cv2.CAP_PROP_FOURCC)))
    	print("cv2.CAP_PROP_FRAME_COUNT: '{}'".format(Vid.get(cv2.CAP_PROP_FRAME_COUNT)))
    	print("cv2.CAP_PROP_BRIGHTNESS: '{}'".format(Vid.get(cv2.CAP_PROP_BRIGHTNESS)))
    	print("cv2.CAP_PROP_CONTRAST: '{}'".format(Vid.get(cv2.CAP_PROP_CONTRAST)))
    	print("cv2.CAP_PROP_SATURATION: '{}'".format(Vid.get(cv2.CAP_PROP_SATURATION)))
      
    Vid.release()
    cv2.destroyAllWindows()

    3번 라인: 무료이미지 사이트에서 받은 동영상 파일 car.mp4 파일을 코드와 동일 폴더에 넣고 불러 옵니다.

    5번 라인: 동영상 불러오기가 성공했을 경우 진행 합니다.

    6~16번 라인: 앞서 property 값을 입력해서 내용을 get 함수로 출력 해줍니다.

    18~19번 라인: 영상이나 이미지(Image) 파일을 열어 놓으면 메모리를 차지 하므로 해제 처리 해줍니다.

     

     

     

    결과>>

    cv2.CAP_PROP_POS_MSEC: '0.0'
    cv2.CAP_PROP_POS_FRAMES: '0.0'
    cv2.CAP_PROP_POS_AVI_RATIO: '4.1666666666666665e-05'
    cv2.CAP_PROP_FRAME_WIDTH: '3840.0'
    cv2.CAP_PROP_FRAME_HEIGHT: '2160.0'
    cv2.CAP_PROP_FPS: '23.976023976023978'
    cv2.CAP_PROP_FOURCC: '828601953.0'
    cv2.CAP_PROP_FRAME_COUNT: '360.0'
    cv2.CAP_PROP_BRIGHTNESS: '0.0'
    cv2.CAP_PROP_CONTRAST: '0.0'
    cv2.CAP_PROP_SATURATION: '0.0'

     

    반응형