📌
##### 동영상을 파일로 저장하기
import cv2
capture = cv2.VideoCapture(0) # 카메라 객체 연결
if capture.isOpened() == False :
raise Exception("카메라 연결 안됨")
fps = 20.0 # 카메라의 초당 프레임의 수.
delay = round(1000/fps)
size = (640,480)
# *"DX50" : 코덱 종류 설정. (* : 포인터 변수.)
fourcc = cv2.VideoWriter_fourcc(*"DX50") #코덱설정
print("프레임 해상도: ", size)
print("압축코덱숫자: ", fourcc)
print("delay: %2d ms" % delay)
print("fps: %.2f" % fps)
# 카메라 설정
capture.set(cv2.CAP_PROP_ZOOM, 1)
capture.set(cv2.CAP_PROP_FOCUS, 0)
capture.set(cv2.CAP_PROP_FRAME_WIDTH, size[0])
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, size[1])
# 동영상을 출력해주는 파일 설정
writer = cv2.VideoWriter("images/vidoe_file.avi", fourcc, fps, size)
if writer.isOpened() == False :
raise Exception("동영상 파일 개방 오류")
while True :
ret, frame = capture.read() # 순간이미지 파일
if not ret : break
if cv2.waitKey(30) >= 0 : break
writer.write(frame) # 이미지 저장.
cv2.imshow("View Frame from Camera", frame) # 화면에 현재 이미지를 출력
writer.release() # 출력파일과의 접속을 종료
capture.release() # 카메라와 접속 종료
📌
# 저장된 동영상 파일 출력하기
capture = cv2.VideoWriter("images/vidoe_file.avi")
if writer.isOpened() == False :
raise Exception("동영상 파일 개방 오류")
frame_rate = capture.get(cv2.CAP_PROP_FPS) # 초당 frame 수
print("frame_rate: ", frame_rate) # 20
while True:
# capture : 동영상 파일
ret, frame = capture.read()
if not ret : break # 동영상 파일을 읽기 종료 되었을 때.
if cv2.waitKey(30) >= 0: break
cv2.imshow("View Frame from Camara", frame)
capture.release() # 동영상 파일과의 접속 종료.
📌
# 이미지의 색상 수정하기
capture = cv2.VideoWriter("images/vidoe_file.avi")
if writer.isOpened() == False :
raise Exception("동영상 파일 개방 오류")
frame_cnt = 0
while True:
ret, frame = capture.read()
if not ret or cv2.waitKey(50) >= 0: break
# cv2.split(frame) : 색상별로 분리.
blue, green, red = cv2.split(frame) # bgr 색상에 해당하는 배열을 분리
# 강사님의 동영상 기준
blue[0,0] # 201
green[0,0] # 216
red[0,0] # 255
frame_cnt += 1
# if 50 <= frame_cnt < 100: <= 파이썬에서는 이런 식의 조건문이 가능하다.
# 자바에서는 if(50 <= frame_cnt) and (frame_cnt < 100): 이런식의 조건문 사용.
# cv2.add : 함수값 증가.
# cv2.add(blue, 100, blue) : blue+100 배열값을 => blue에 저장
if 50 <= frame_cnt < 100: cv2.add(blue, 100, blue)
elif 100 <= frame_cnt < 150: cv2.add(green, 100, green)
elif 150 <= frame_cnt < 300: cv2.add(red, 100, red)
# cv2.merge([blue, green, red]) : 다시 bgr이라는 배열의 값을 병합.
frame = cv2.merge([blue, green, red])
put_string(frame, "frame_cnt: ", (20,320), frame_cnt)
cv2.imshow("Read Video File", frame)
capture.release()
'수업(국비지원) > Python' 카테고리의 다른 글
| [Python] 2022-12-27 복습 (0) | 2023.04.27 |
|---|---|
| [Python] 숫자 인식하기 (0) | 2023.04.27 |
| [Python] 동영상 파일 출력 (0) | 2023.04.27 |
| [Python] 이미지 형태 분석 (0) | 2023.04.27 |
| [Python] opencv - 이미지 출력 (0) | 2023.04.27 |