PYTHON 프로그래밍

본문 바로가기
사이트 내 전체검색


PYTHON 프로그래밍
PYTHON 프로그래밍

20. 캡쳐 및 녹화

페이지 정보

작성자 관리자 댓글 0건 조회 4,723회 작성일 19-09-28 21:47

본문

20. 캡쳐 및 녹화

캡쳐 및 녹화(Capture & Record)


영상이나 이미지를 캡쳐하거나 녹화하기 위해 사용합니다. 영상이나 이미지를 연속적 또는 순간적으로 캡쳐하거나 녹화할 수 있습니다.

소스 :

 

import datetime
import cv2

capture = cv2.VideoCapture("image/star.mp4")
fourcc = cv2.VideoWriter_fourcc(*'XVID')
record = False

while True:
    if(capture.get(cv2.CAP_PROP_POS_FRAMES) == capture.get(cv2.CAP_PROP_FRAME_COUNT)):
        capture.open("image/star.mp4")

    ret, frame = capture.read()
    cv2.imshow("VideoFrame", frame)

    now = datetime.datetime.now().strftime("%d_%H-%M-%S")
    key = cv2.waitKey(33)

    if key == 27:
        break
    elif key == 26:
        print("캡쳐")
        cv2.imwrite("D:/" + str(now) + ".png", frame)
    elif key == 24
        print("녹화 시작")
        record = True
        video = cv2.VideoWriter("D:/" + str(now) + ".avi", fourcc, 20.0, (frame.shape[1], frame.shape[0]))
    elif key == 3
        print("녹화 중지")
        record = False
        video.release()
       
    if record == True:
        print("녹화 중..")
        video.write(frame)

capture.release()
cv2.destroyAllWindows()

 


설명 :

 

fourcc = cv2.VideoWriter_fourcc(*'XVID')
record = False

fourcc를 생성하여 디지털 미디어 포맷 코드를 생성합니다. cv2.VideoWriter_fourcc(*'코덱')을 사용하여 인코딩 방식을 설정합니다.

record 변수를 생성하여 녹화 유/무를 설정합니다.
FourCC(Four Character Code) : 디지털 미디어 포맷 코드입니다. 즉, 코덱의 인코딩 방식을 의미합니다.

 


import datetime

now = datetime.datetime.now().strftime("%d_%H-%M-%S")

datetime 모듈을 포함하여 현재 시간을 받아와 제목으로 사용합니다.

now에 파일의 제목을 설정합니다. 날짜_시간-분-초의 형식으로 제목이 생성됩니다.

 


key = cv2.waitKey(33)

key 값에 현재 눌러진 키보드 키의 값이 저장됩니다. 33ms마다 갱신됩니다.

 


if key == 27:
    break
elif key == 26:
    print("캡쳐")
    cv2.imwrite("D:/" + str(now) + ".png", frame)
elif key == 24
    print("녹화 시작")
    record = True
    video = cv2.VideoWriter("D:/" + str(now) + ".avi", fourcc, 20.0, (frame.shape[1], frame.shape[0]))
elif key == 3
    print("녹화 중지")
    record = False

if-elif`문을 이용하여 눌러진 키의 값을 판단합니다.

27 = ESC, 26 = Ctrl + Z, 24 = Ctrl + X, 3 = Ctrl + C를 의미합니다.

ESC키를 눌렀을 경우, 프로그램을 종료합니다.

Ctrl + Z를 눌렀을 경우, 현재 화면을 캡쳐합니다. cv2.imwrite("경로 및 제목", 이미지)를 이용하여 해당 이미지를 저장합니다.

Ctrl + X를 눌렀을 경우, 녹화를 시작합니다. video에 녹화할 파일 형식을 설정합니다.

cv2.VideoWriter("경로 및 제목", 비디오 포맷 코드, FPS, (녹화 파일 너비, 녹화 파일 높이))를 의미합니다.

Ctrl + C를 눌렀을 경우, 녹화를 중지합니다. video.release()를 사용하여 메모리를 해제합니다.

녹화 시작할 때, record를 True로, 녹화를 중지할 때 record를 False로 변경합니다.
key 값은 아스키 값을 사용합니다.
FPS(Frame Per Second) : 영상이 바뀌는 속도를 의미합니다. 즉, 화면의 부드러움을 의미합니다.
frame.shape는 (높이, 너비, 채널)의 값이 저장되어있습니다.

 


if record == True:
    print("녹화 중..")
    video.write(frame)

if문을 이용하여 record가 True일때 video에 `프레임을 저장합니다.

video.write(저장할 프레임)을 사용하여 프레임을 저장할 수 있습니다.

 

FourCC 종류

CVID, Default, DIB, DIVX, H261, H263, H264, IV32, IV41, IV50, IYUB, MJPG, MP42, MP43, MPG4, MSVC, PIM1, Prompt, XVID
단일 채널 이미지의 경우, 사용할 수 없는 디지털 미디어 포맷 코드가 존재합니다.

 

결과 :

 

 

1.JPG 

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.