Data Science/컴퓨터비전
[opencv/python] 동영상 읽어와서 처리 후 다시 동영상으로 만들기
상어군
2023. 6. 18. 19:22
반응형
동영상을 기반으로한 프로젝트들을 하다보면, 결과에 대해서 표현해 주어야하는 경우가 생긴다.
해당 포스팅에서는 이에 대한 내용을 간략히 정리해본다.
1. 동영상 프레임(이미지) 단위로 불러오기
cap = cv2.VideoCapture("동영상 주소")
if cap.isOpened():
ret, img = cap.read()
while ret:
ret, img = cap.read()
if not ret:
break
## 이미지 처리 부분
# ~~
2. 미사용 프레임에 대해서 생략하기
특정 프레임을 스킵하고 싶다면 아래의 명령어로 cap.read 보다 빠르게 스킵 가능하다
cap.grab()
3. 이미지 처리하기
예측모델의 동작이나 전/후처리 가 여기에 해당할 수 있다.
해당 포스팅에서는 모델부분은 다루지 않고, 간단한 이미지에 글자 추가하기로 대체한다.
text = "입력하고싶은 글자"
font = cv2.FONT_HERSHEY_SIMPLEX # 글자 폰트
fontSize = 1 # 글자 크기
color = (255,255,255) # 글자 색
thickness = 1 # 글자 굵기
cv2.putText(img, text, (x,y), font, fontSize, color , thickness, cv2.LINE_AA)
4. 처리한 이미지 저장하기
output_path = '출력파일 경로 및 이름'
fps = 30
img_h, img_w, img_c = img.shape
# 동영상 파일 생성
out = cv2.VideoWriter(output_path,cv2.VideoWriter_fourcc(*'DIVX'), fps, (img_w,img_h))
# 이미지 입력
out.write(img)
# 동영상 릴리즈
out.release()
5. 활용
cap = cv2.VideoCapture("동영상 주소")
output_path = '출력파일 경로 및 이름'
fps = 30
if cap.isOpened():
ret, img = cap.read()
img_h, img_w, img_c = img.shape
# 출력 동영상 파일 생성
out = cv2.VideoWriter(output_path,cv2.VideoWriter_fourcc(*'DIVX'), fps, (img_w,img_h))
while ret:
ret, img = cap.read()
if not ret:
break
# 한 프레임 생략
cap.grab()
text = "입력하고싶은 글자"
font = cv2.FONT_HERSHEY_SIMPLEX # 글자 폰트
fontSize = 1 # 글자 크기
color = (255,255,255) # 글자 색
thickness = 1 # 글자 굵기
cv2.putText(img, text, (x,y), font, fontSize, color , thickness, cv2.LINE_AA)
# 이미지 입력
out.write(img)
# 동영상 릴리즈
out.release()
반응형