동영상을 개별 Frame으로 하나씩 읽어들이는 기능
카메라 출력은 카메라가 스트리밍 형태로 동작할 수 있을 때, 사용
카메라의 장치번호를 통해 받아오고, 사용중인 플랫폼에서 카메라에 대한 접근권한 허용 필요
추가적으로 카메라를 연결하여 외장 카메라를 사용하는 경우, 장치 번호가 1~n까지 순차적으로 할당됨.
import cv2
capture = cv2.VideoCapture(0)
capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
while cv2.waitKey(33) < 0:
ret, frame = capture.read()
cv2.imshow("VideoFrame", frame)
capture.release()
cv2.destroyAllWindows()
카메라의 Frame 너비 설정: capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
카메라의 Frame 높이 설정: capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
카메라의 프레임 받아오기: While문을 활용하여 받아 올수 있다.
키 입력이 있을 때까지 프로그램 지연: cv2.waitKey(33) < 0, 33은 대기시간(mm)
delay가 0일 경우, 지속적으로 키 입력을 검사하여 프레임이 넘어가지 않는다. cv2.waitKey(33) < 0 != ord('q')로 사용할 경우, q 가 입력될 때, while 문이 종료된다.
if not cap.isOpened():
print("Camera open failed!") # 열리지 않았으면 문자열 출력
sys.exit()
영상의 Frame 너비: 영상.get(cv2.CAP_PROP_FRAME_WIDTH)
영상의 Frame 높이: 영상.get(cv2.CAP_PROP_FRAME_HEIGHT)
영상의 FPS : 영상.get(cv2.CAP_PROP_FPS)
경로, 코덱유형, FPS, (너비, 높이) 를 차례로 받는다.
코덱 유형 가져오기: cv2.VideoWriter_fourcc(*'XVID')
너비와 높이는 반올림 해주어야 한다(int).
출처: https://076923.github.io/posts/Python-opencv-2/, https://deep-learning-study.tistory.com/107#:~:text=4.,%EC%9D%84%20%EB%B0%9B%EC%95%84%EC%98%AC%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.&text=retval%20%3A%20%EC%84%B1%EA%B3%B5%ED%95%98%EB%A9%B4%20True%2C%20%EC%8B%A4%ED%8C%A8%ED%95%98%EB%A9%B4%20False.