def showVideo():

    cap = cv2.VideoCapture(
        '/home/jkim/gitdir/project_cctv_storage_optimization/out_01.avi')
    #비디오객체를 반환한다
    #Input file

    cap.set(3, 480)
    cap.set(4, 320)

    #cap.set(cv2.CAP_PROP_POS_FRAMES,300)
    # 원하는 프레임으로 이동할 수 있다

    while True:
        ret, frame = cap.read()
        # 재생되는 비디오를 한 frame씩 읽는다
        # 정상적으로 읽을 시 ret 변수에  True 가 들어간다
        if not ret:
            print("read error")
            break
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow('video', gray)

        k = cv2.waitKey(1) & 0xFF
        if k == 27:
            break

    cap.release()
    #open 한 cap 객체를 해제한다
    cv2.dsetroyAllWindows()
Пример #2
0
def showVideo():

    cap = cv2.VideoCapture('videos/test3.mp4')

    fps = 20.0
    # frame 속도를 지정한다
    width = int(cap.get(3))
    height = int(cap.get(4))
    # 기존 영상의 높이와 너비를 사용한다

    fcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')
    # DIVX코덱을 적용한다
    out = cv2.VideoWriter('sample.avi', fcc, fps, (width, height))
    # 비디오 저장을 위한 객체

    print('녹화를 시작합니다')

    while True:
        ret, frame = cap.read()
        # 재생되는 비디오를 한 frame씩 읽는다
        # 정상적으로 읽을 시 ret 변수에  True 가 들어간다
        if not ret:
            print("read error")
            break
        cv2.imshow('video', frame)
        out.write(frame)
        k = cv2.waitKey(1) & 0xFF
        if k == 27:
            print('녹화를 종료합니다')
            break

    cap.release()
    out.release()
    cv2.dsetroyAllWindows()
Пример #3
0
def showVideo():

    cap = cv2.VideoCapture('videos/test3.mp4')
    #비디오객체를 반환한다

    cap.set(3, 480)
    cap.set(4, 320)

    cap.set(cv2.CAP_PROP_POS_FRAMES, 300)
    # 원하는 프레임으로 이동할 수 있다

    while True:
        ret, frame = cap.read()
        # 재생되는 비디오를 한 frame씩 읽는다
        # 정상적으로 읽을 시 ret 변수에  True 가 들어간다
        if not ret:
            print("read error")
            break
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow('video', gray)

        k = cv2.waitKey(1) & 0xFF
        if k == 27:
            break

    cap.release()
    #open 한 cap 객체를 해제한다
    cv2.dsetroyAllWindows()
def showVideo():

    cap = cv2.VideoCapture(
        '/home/jkim/gitdir/project_cctv_storage_optimization/long_01.mp4')
    # Input file

    fps = 20.0
    width = int(cap.get(3))
    height = int(cap.get(4))

    fcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')
    out = cv2.VideoWriter('out_01.avi', fcc, fps, (width, height))
    #output file

    CurrentFrame = 0
    StartFrame = 0
    EndFrame = 1000
    # 현재 프레임 계산에 이용할 CurrentFrame
    # 시작 프레임 설정 StartFrame
    # 종료 프레임 설정 EndFrame

    cap.set(cv2.CAP_PROP_POS_FRAMES, StartFrame)
    #설정한 시작프레임으로 영상 시작점을 조정합니다
    CurrentFrame = StartFrame
    #현재 프레임을 시작 프레임으로 설정합니다
    print('녹화를 시작합니다')

    score = 0
    #SSIM score 초기화
    while True:
        ret, frame = cap.read()
        if not ret:
            print("read error")
            break
        gframe = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        #SSIM 비교를위해 흑백컬러로 바꿔줌 (SSIM 비교 흑백만 가능)
        print(score)
        if CurrentFrame != StartFrame:

            (score, diff) = compare_ssim(gframe, cprimg, full=True)

        cprimg = gframe
        if score < 0.99:
            cv2.imshow('video', frame)
            out.write(frame)
            # SSIM이 0.9 보다 작을 때 에만 영상을 기록합니다

        CurrentFrame += 1
        #영상이 녹화되고 그다음 현재 프레임이 올라갑니다

        k = cv2.waitKey(1) & 0xFF
        if k == 27 or CurrentFrame == EndFrame:
            print('녹화를 종료합니다')
            print('start: ', StartFrame, 'end: ', CurrentFrame)
            break
        #현재 프레임이 설정한 종료프레임과 같아지면 녹화를 종료합니다
    cap.release()
    out.release()
    cv2.dsetroyAllWindows()
Пример #5
0
def showVideo():

    cap = cv2.VideoCapture('/home/jkim/gitdir/opencv/videos/test3.mp4')

    fps = 20.0
    width = int(cap.get(3))
    height = int(cap.get(4))

    fcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')
    out = cv2.VideoWriter('sample2.avi', fcc, fps, (width, height))

    CurrentFrame = 0
    StartFrame = 50
    EndFrame = 151
    # 현재 프레임 계산에 이용할 CurrentFrame
    # 시작 프레임 설정 StartFrame
    # 종료 프레임 설정 EndFrame

    cap.set(cv2.CAP_PROP_POS_FRAMES, StartFrame)
    #설정한 시작프레임으로 영상 시작점을 조정합니다
    CurrentFrame = StartFrame
    #현재 프레임을 시작 프레임으로 설정합니다
    print('녹화를 시작합니다')

    while True:
        ret, frame = cap.read()
        if not ret:
            print("read error")
            break
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow('video', frame)
        out.write(frame)
        #녹화와 출력은 동시에 이루어집니다
        #cv2.imwrite("ExtIMG%d.jpg" % CurrentFrame,frame)
        #캡처기능

        CurrentFrame += 1
        #영상이 녹화되고 그다음 현재 프레임이 올라갑니다

        k = cv2.waitKey(1) & 0xFF
        if k == 27 or CurrentFrame == EndFrame:
            print('녹화를 종료합니다')
            print('start: ', StartFrame, 'end: ', CurrentFrame)
            break
        #현재 프레임이 설정한 종료프레임과 같아지면 녹화를 종료합니다
    cap.release()
    out.release()
    cv2.dsetroyAllWindows()