이전 글 :
2022.10.06 - [프로그래밍/Python] - [Python] OpenCV 이미지 출력
일단 먼저 예제에 사용될 동영상이다.
주인공은 우리 집 고양이 코코.
영상 길이는 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 )) # 프레임 높이
관련 문서는
오픈 라이브러리라서 그런가 좀 불친절하다.
set/get이 서로 다른 듯한데... 내가 다른 문서를 가져온 것일까
알아가려면 또 머리 아프겠다... 후 ;; 이 글은 참고만 하자...
'프로그래밍 > Python' 카테고리의 다른 글
[Python] OpenCV 사람 표정 검출(라즈베리파이) (0) | 2022.11.11 |
---|---|
[Python] OpenCV 사람인식(라즈베리파이) (0) | 2022.11.11 |
[Python] OpenCV 이미지 출력 (0) | 2022.10.06 |
[Python] OpenCV란 (0) | 2022.10.06 |
[Python] ModuleNotFoundError: No module named 'main_rc' 오류 해결 (0) | 2022.09.07 |
댓글