프로그래밍/Python

[Python] OpenCV 영상 출력(너비, 높이, 프레임)

Beginner:) 2022. 10. 7.
320x100

이전 글 :

2022.10.06 - [프로그래밍/Python] - [Python] OpenCV 이미지 출력

 

[Python] OpenCV 이미지 출력

OpenCV 이미지 출력하는 방법이다. import cv2 image = cv2.imread('C:/Users/Park/Desktop/park-duck.jpg') cv2.imshow('image title', image) cv2.waitKey(0) cv2.destroyAllWindows() 1. imread(filename, fla..

park-duck.tistory.com

 

일단 먼저 예제에 사용될 동영상이다.

 

주인공은 우리 집 고양이 코코.

 

park-duck.mp4
3.33MB

 

영상 길이는 5초이며  30 프레임이니 총 150장의 사진이 5초 동안 지나간다고 보면 된다.

 

너비는 1080, 높이는 810이다. 진짜 원본은 더 귀여운데 높이가 너무 커서 좀 잘랐다...


다음은 동영상 재생하는 방법이다.

 

사진을 연속으로 보여주는 것이 동영상인 것은 누구나 알 것이니 자세한 설명은 패스

 

import cv2

cap = cv2.VideoCapture('C:/Users/Park/Desktop/park-duck.mp4')

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    cv2.imshow('video', frame)
    cv2.waitKey(25)

cap.release()
cv2.destroyAllWindows()

 

1. VideoCapture(path)

동영상 파일의 경로를 파라미터로 받으며 0으로 입력 시 컴퓨터에 연결된 카메라를 스트리밍으로 보여준다.

 

2. cap.read()

cv2.read와 다르게 cap에 있는 데이터, 즉 영상의 데이터를 하나씩 불러온다.

 

반환 값은 ret-프레임 반환 여부와 frame - 프레임 데이터이다.

 

이외에는 이전 글(최상단 링크) "이미지 출력"을 보면 알 수 있을 것이다.

 

조금만 더 설명하자면 waitKey가 millisecond라고 했는데 컴퓨터가 워낙 빠르다 보니 1 millisecond로 하면 훅 지나가버리니

 

자신의 컴퓨터 스펙에 맞게 알맞게 조정하면 된다. 

 

나의 경우 20~30 millisecond가 적당했다.

 

3. cap.release()

자원 반납, 즉 메모리 해제

 


편의를 위해 동영상 자체 너비&높이를 잘랐는데

OpenCV자체에서도 영상 너비&높이는 조정이 가능하다.

 

명령어는

cap.set(3, 100) # width
cap.set(4, 100) # height

 

프레임 값, 프레임 너비, 높이도 구할 수 있다.

print(cap.get(cv2.CAP_PROP_FPS )) # 프레임/초 값
print(cap.get(cv2.CAP_PROP_FRAME_WIDTH )) # 프레임 너비
print(cap.get(cv2.CAP_PROP_FRAME_HEIGHT )) # 프레임 높이

 

관련 문서는 

https://docs.opencv.org/4.x/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d

 

오픈 라이브러리라서 그런가 좀 불친절하다.

 

set/get이 서로 다른 듯한데...  내가 다른 문서를 가져온 것일까 

 

알아가려면 또 머리 아프겠다... 후 ;; 이 글은 참고만 하자...

 

반응형

댓글