[실습1] 비디오 처리 - 카메라에서 프레임 읽기
코드 :
import cv2
def display_info(frame, text, pt, value, color=(120, 200, 90)):
text += str(value)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame, text, pt, font, 0.7, color, 2)
capture = cv2.VideoCapture(0) # 0번 카메라 연결
if capture.isOpened() == False:
raise Exception("카메라 연결 안됨")
# 카메라 속성 획득 및 출력
# print("너비 %d" % capture.get())
# print("높이 %d" % capture.get())
# print("노출 %d" % capture.get())
# print("밝기 %d" % capture.get())
# 카메라 속성 획득 및 출력
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))
print("대비 %d" % capture.get(cv2.CAP_PROP_CONTRAST))
print("채도 %d" % capture.get(cv2.CAP_PROP_SATURATION))
while True: # 무한 반복
ret, frame = capture.read() # 카메라 영상 받기
if not ret:
break
if cv2.waitKey(30) >= 0:
break
brightness = capture.get(cv2.CAP_PROP_BRIGHTNESS)
contrast = capture.get(cv2.CAP_PROP_CONTRAST)
saturation = capture.get(cv2.CAP_PROP_SATURATION)
display_info(frame, "BRIGHTNESS: ", (10, 40), brightness)
display_info(frame, "CONTRAST: ", (10, 70), contrast)
display_info(frame, "SATURATION: ", (10, 100), saturation)
title = "View Frame from Camera"
cv2.imshow(title, frame) # 윈도우에 영상 띄우기
capture.release()
cv2.destroyAllWindows() # 모든 열린 윈도우 닫기
실행 :
PS C:\Users\032\SKT_AI\chap04> python 17.read_pccamera.py
너비 640
높이 480
노출 -5
밝기 0
대비 50
채도 64
Traceback (most recent call last):
File "C:\Users\032\SKT_AI\chap04\17.read_pccamera.py", line 30, in <module>
if cv2.waitKey(30) >= 0:
~~~~~~~~~~~^^^^
KeyboardInterrupt
PS C:\Users\032\SKT_AI\chap04>
[실습2] 비디오 처리 - 동영상 파일 읽기
코드 :
import cv2
from Common.utils import put_string
# 동영상 파일 열기
capture = cv2.VideoCapture(r"C:\Users\032\SKT_AI\chap04\수업중2.mp4")
if not capture.isOpened():
raise Exception("동영상 파일 개방 안됨")
# 동영상 정보 가져오기
frame_width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_rate = capture.get(cv2.CAP_PROP_FPS)
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 코덱 설정 (MP4 형식)
# 출력 동영상 설정
output_path = r"C:\Users\032\SKT_AI\chap04\수업중_편집본.mp4"
writer = cv2.VideoWriter(output_path, fourcc, frame_rate, (frame_width, frame_height))
frame_cnt = 0 # 현재 프레임 번호
delay = int(1000 / frame_rate) # 지연 시간
while True:
ret, frame = capture.read()
if not ret or cv2.waitKey(delay) >= 0:
break
blue, green, red = cv2.split(frame)
frame_cnt += 1
# 특정 프레임 범위에서 색상 조정
if 100 <= frame_cnt < 200:
cv2.add(blue, 100, blue)
elif 200 <= frame_cnt < 300:
cv2.add(green, 100, green)
elif 300 <= frame_cnt < 400:
cv2.add(red, 100, red)
# 단일채널 영상 합성
frame = cv2.merge([blue, green, red])
# 프레임 번호 출력
put_string(frame, "frame_cnt : ", (20, 320), frame_cnt)
# 동영상 출력 및 저장
cv2.imshow("Read Video File", frame)
writer.write(frame) # 저장
# 자원 해제
capture.release()
writer.release()
cv2.destroyAllWindows()
실행 :
PS C:\Users\032\SKT_AI\chap04> python 20.read_video_file.py
'AI, 논문, 데이터 분석' 카테고리의 다른 글
[OpenCV] Morphology (침식 / 팽창 / 열림과 닫힘) (0) | 2025.01.22 |
---|---|
[OpenCV] Filtering (0) | 2025.01.22 |
[Deep Learning] 개념 및 실습 [모음/정리] + 회고 (0) | 2025.01.19 |
[Docker][GitHub] 개념 및 실습 [모음/정리] (2) | 2025.01.19 |
[NLP] 임베딩 (0) | 2025.01.18 |