소스 뷰어
# 19_read_video_file.py

import cv2

# 그림자 문자 출력
def put_string(frame, text, pt, value=None, color=(120, 200, 90)) :
    text = str(text) + str(value)
    shade = (pt[0] + 2, pt[1] + 2)
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(frame, text, shade, font, 0.7, (0, 0, 0), 2) # 그림자 효과
    cv2.putText(frame, text, pt   , font, 0.7, color, 2) # 작성 문자
pass

# 현재 소스 파일의 폴더 경로
from pathlib import Path
dir = Path( __file__ ).resolve().parent

capture = cv2.VideoCapture( dir.joinpath( "img/write_video.avi" ) )    # 동영상 파일 읽기
if not capture.isOpened(): raise Exception("동영상 파일 읽기 불가")	

frame_rate = capture.get(cv2.CAP_PROP_FPS)           # 초당 프레임 수
delay = int(1000/frame_rate)                         # 지연 시간
frame_cnt = 0                                        # 현재 프레임 번호
height = int( capture.get(cv2.CAP_PROP_FRAME_HEIGHT) )  # 동영상 높이

while True:
    ret, frame = capture.read()
    if not ret or cv2.waitKey(delay) >= 0: break    # 프레임 간 지연 시간 지정
    blue, green, red = cv2.split(frame)             # 컬러 영상 채널 분리
    frame_cnt += 1    # 프레임 카운트 1씩 증가

    if 100 <= frame_cnt < 200: cv2.add(blue, 100, blue)     # blue 채널 밝기 증가
    elif 200 <= frame_cnt < 300: cv2.add(green, 100, green) # green 채널 밝기 증가
    elif 300 <= frame_cnt < 400: cv2.add(red  , 100, red)   # red 채널 밝기 증가

    '''
    if 100 <= frame_cnt < 200: blue += 100     # blue 채널 밝기 증가
    elif 200 <= frame_cnt < 300: green += 100  # green 채널 밝기 증가
    elif 300 <= frame_cnt < 400: red += 100    # red 채널 밝기 증가
    '''

    frame = cv2.merge( [blue, green, red] )                 # 단일채널 영상 합성
    put_string(frame, "frame_cnt : ", (20, height//2), frame_cnt)
    cv2.imshow("Read Video File", frame)
pass

capture.release()