본문 바로가기
수업(국비지원)/Python

[Python] 동영상 파일 출력

by byeolsub 2023. 4. 27.

 📌

###### 동영상 파일
import cv2

capture = cv2.VideoCapture(0) # 카메라 객체 연결
if capture.isOpened() == False :
    raise Exception("카메라 연결 안됨")

# 카메라 속성값    
print("너비 %d" % capture.get(cv2.CAP_PROP_FRAME_WIDTH)) # 가로 길이
print("높이 %d" % capture.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 세로 길이
print("노출 %d" % capture.get(cv2.CAP_PROP_EXPOSURE)) 
print("밝기 %d" % capture.get(cv2.CAP_PROP_BRIGHTNESS))

# 동영상에 지정된 위치에 문자 출력하는 함수
# color = (120,200,90) : BGR(파랑, 초록, 빨강)
def put_string(frame, text, pt, value, color = (120,200,90)) :
    # frame : 동영상 출력 영역(이미지)
    # text : 화면에 출력할 문자 내용
    # pt : 문자 출력 위치 정보. (10, 40) 
    text += str(value) # EXPOS: -1, 출력할 문자의 내용 
    # shade : 그림자의 위치값.
    shade = (pt[0] + 2, pt[1] +2) # (12, 42)
    font = cv2.FONT_HERSHEY_SIMPLEX # 폰트설정.(영문만 가능)
                                    # 한글은 텍스트 형식으로 쓴다기 보다는 그린다.
    # 0.7 : font의 크기
    # (0, 0, 0) : 검정색
    # 2 : 글자의 두께
    cv2.putText(frame, text, shade, font, 0.7, (0,0,0), 2) # 그림자 효과
    cv2.putText(frame, text, pt, font, 0.7, color, 2)
    
# 카메라 영상을 출력    
while True : # 무한 반복.
    # frame : 카메라가 보내주는 영상. 이미지 영역으로 봐야 한다.(순간이미지)
    ret, frame = capture.read() # 카메라 영상을 받아주는 부분
    if not ret: break # 이미지를 받아 오지 못하면 반복문 종료.
    if cv2.waitKey(30) >= 0: break # 30. 스페이스바 입력시 반복문 종료.(동영상 받기를 그만하겠다.)
    exposure = capture.get(cv2.CAP_PROP_EXPOSURE) # 노출값.
    put_string(frame, "EXPOS: ", (10,40), exposure)
    # frame : 텍스트를 출력한 이미지파일
    title = "View Frame from Camera"
    cv2.imshow(title, frame) # 이미지 화면 출력
capture.release() # 카메라 접속 종료