반응형

RTSP 재접속 및 비디오 다시 재생하는 코드를 OpenCV로 간단히 구현해봤습니다.

 

2022. 10. 27  최초작성




import cv2
import time


try_num = 1
program_quit = False


# 두개의 루프를 사용합니다.
# 바깥 루프는 RTSP 재접속  시도 및 비디오 다시 재생하는 루프이고
# 안쪽 루프는 이미지를 가져와 화면에 보여주는 루프입니다.
while True:

    # 시도한 횟수를 출력합니다.
    print(f'try {try_num}')

    # 0 대신에 RTSP URL 이나 비디오 파일 이름으로 대체하면 됩니다.
    cap = cv2.VideoCapture(0)

    # 이미지를 가져옵니다.
    ret,img_color = cap.read()
    if ret == False:
        try_num += 1
        time.sleep(1)
        continue

    try_num = 1

    # fps 값을 획득합니다.
    fps = cap.get(cv2.CAP_PROP_FPS)
    print('fps', fps)


  # 읽어올 수 없는 경우 디폴트로 30을 사용합니다.
    if fps == 0.0:
        fps = 30.0

   
    # 이미지를 가져오는 로프입니다.
    while True:

        # 이미지를 읽어옵니다.
        ret,img_color = cap.read()


        # 이미지를 읽어올 수 없는 경우 안쪽 루프에서 빠져나옵니다.
        if ret == False:
            print('이미지를 가져올 수 없습니다.')
            break


        cv2.imshow("Color", img_color)
       
        if cv2.waitKey(1) == 27: # ESC키 누르면 프로그램 종료
            program_quit = True # 바깥쪽 루프도 빠져나가도록 합니다.
            break

    cap.release()
    cv2.destroyAllWindows()


    # ESC 키를 누른경우 바깥 루프에서 빠져나옵니다.
    if program_quit:
        break



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts