opencv 동영상 출력을 다루겠습니다.
카메라 출력 : cv2.VideoCapture(index)
index에는 내장 카메라 또는 외장 카메라 장치 번호를 입력합니다. 카메라의 장치 번호의 경우
노트북과 같이 내장 카메라가 탑재되어 있는 경우 내장 카메라를 0번, 그 외의 외장 카메라를 순서대로 +1씩
내장 카메라가 없으시면 0부터 넣으시면 됩니다.
동영상 불러오기 : cv2.VideoCapture(filename)
filename : 파일의 상대 경로, 절대 경로를 적어줍니다.
카메라 출력
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
cv2.imshow('Video', img)
if cv2.waitKey(10) == ord('q'):
break
cap.release() # 동영상 파일 닫고 메모리 해제
비디오 출력
import cv2
cap = cv2.VideoCapture('videos/04.mp4') # videos 폴더의 04.mp4 파일
while True:
ret, img = cap.read()
cv2.imshow('result', img)
if cv2.waitKey(1) == ord('q'):
break
cap.release() # 동영상 파일 닫고 메모리 해제
동영상은 프레임을 읽어 이미지의 형태로 출력합니다.
이미지의 형태는 숫자의 배열로 이루어져 있습니다.
ret : 파일 불러오기에 read()에 성공했다면 True를 반환합니다.
카메라는 없어도 True가 반환되는 것 같네요.
print(ret)
print(img)
그렇기 때문에 계속해서 프레임을 읽어 들이기 위해 반복문을 사용하여 동영상을 읽습니다.
cv2.waitKey(10) == ord('q')
cv2.waitKey(숫자) == ord('키보드 키') : 숫자를 늘리면 카메라, 동영상 재생 속도가 느려집니다.
키보드 키를 출력을 멈추고 출력 화면이 꺼집니다.
0으로 하게 되면 키 입력이 들어오기 전까지 무한정 대기합니다.
설정한 키 외 다른 키를 입력하면 한 프레임만 넘어갑니다.
기본 속성 확인
cv2.CAP_PROP_FRAME_WIDTH : 프레임 너비
cv2.CAP_PROP_FRAME_HEIGHT : 프레임 높이
cv2.CAP_PROP_FPS : 프레임 속도
cap.get(cv2.CAP_PROP__FRAME_WIDTH) : 카메라 영상 프레임 너비를 반환합니다.
cap.set(cv2.CAP_PROP__FRAME_WIDTH, 480) : 카메라 영상 프레임 너비를 480으로 변환합니다.
import cv2
cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
print(width) # 640
print(height) # 480
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320) # cap.set(cv2.CAP_PROP_FRAME_WIDTH, width/2)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) # cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height/2)
while True:
ret, img = cap.read()
cv2.imshow('result', img)
if cv2.waitKey(1) == ord('q'):
break
cap.release() # 동영상 파일 닫고 메모리 해제
※ 이때 WIDTH 값과 HEIGHT 값을 너무 이상하게 설정해주면 반영이 되지 않습니다.
'OpenCV-Python' 카테고리의 다른 글
OpenCV Python 필터링 - 부드러운 영상 만들기 : blur, GaussianBlur (0) | 2021.08.22 |
---|---|
OpenCV Python 자르기, 붙이기 (2) | 2021.08.21 |
OpenCV Python 이미지 색상 변환 (0) | 2021.08.20 |
OpenCV Python 이미지 저장, 불러오기 (0) | 2021.08.18 |
OpenCV Python 환경 구성(Anaconda,Visual Studio Code) (0) | 2021.08.17 |