python/opencv(cv2)

python opencv를 사용하여 열화상 영상 저장

자코린이 2023. 6. 20. 01:11
while True:
    num += 1
    snum = str(num)
    
    #현재시간 가져오기
    currentTime = datetime.datetime.now()
    if bDate == "":
        bDate = str(currentTime.strftime('%Y%m%d'))
    
    #RTSP를 불러오는 곳
    video_capture = cv2.VideoCapture(1)

    # 웹캠 설정
    #video_capture.set(3, 800)  # 영상 가로길이 설정
    #video_capture.set(4, 600)  # 영상 세로길이 설정
    fps = 20
    # 가로 길이 가져오기
    streaming_window_width = int(video_capture.get(3))
    # 세로 길이 가져오기
    streaming_window_height = int(video_capture.get(4))  

    #현재 시간을 '년도 달 일 시간 분 초'로 가져와서 문자열로 생성
    #current date
    cDate = str(currentTime.strftime('%Y%m%d'))
    if cDate != bDate:
        num = 0
        bDate = cDate
    #파일 저장하기 위한 변수 선언
    path = f'01_1_T_EG_NA_{cDate}_{snum.zfill(2)}.mp4'

    # DIVX 코덱 적용 # 코덱 종류 # DIVX, XVID, MJPG, X264, WMV1, WMV2
    # 무료 라이선스의 이점이 있는 XVID를 사용
    #fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
    fourcc = cv2.VideoWriter_fourcc(*'MP4V')
    # 비디오 저장
    # cv2.VideoWriter(저장 위치, 코덱, 프레임, (가로, 세로))
    out = cv2.VideoWriter(path, fourcc, fps, (streaming_window_width, streaming_window_height))

    i = 0
    while True:
        i += 1
        ret, frame = video_capture.read()
        # 촬영되는 영상보여준다. 프로그램 상태바 이름은 'streaming video' 로 뜬다.
        cv2.imshow('streaming video', frame)
        
        # 영상을 저장한다.
        out.write(frame)
        
        # 1ms뒤에 뒤에 코드 실행해준다.
        k = cv2.waitKey(1) & 0xff
        #키보드 esc 누르면 종료된다.
        if k == 27:
            break
        if i ==72000:
            #i = 0
            break
    video_capture.release()  # cap 객체 해제
    out.release()  # out 객체 해제
    cv2.destroyAllWindows()
    print("capture end")

2022.09.19 - [개발일지/ffmpeg] - ffmpeg을 사용하여 webcam의 영상을 저장하거나 udp 방송

 

ffmpeg을 사용하여 webcam의 영상을 저장하거나 udp 방송

저는 윈도우를 사용하였습니다. 리눅스는 제가 참조한 곳을 방문하여 읽어주세요 먼저 vfwcap포멧을 사용하는 방법부터 알려드리겠습니다.(vfwcap은 오래된 옵션이라 아래 방법을 추천합니다.) //vf

jacorinne.tistory.com

위의 글을 읽어보시면 왜 ffmpeg을 사용하지 않고, python을 사용하여 영상을 저장하는지 궁금하신 분들이 있을겁니다.

열화상이 기본적으로 찍는 영상은 흑백 영상으로 많이 알려진 온도에 따른 색상과 같이 보려면 python 코드가 필요합니다.