728x90
반응형
파일명을 패턴으로 찾아서 png 파일들로 동영상 만들기
import os
import numpy as np
import imageio
from PIL import Image
# avi로 만들 파일들이 있는 폴더 경로
folder_path = 'E:/RnD/Stock/stockTradeClassify/train_tmp/750_tmp'
out_path = 'E:/RnD/Stock/stockTradeClassify/train_tmp/750_tmp'
file_pattern = "MAX_TEST"
# 폴더에서 파일 리스트 가져오기
file_list = os.listdir(folder_path)
# 파일 이름 패턴에 맞는 파일들만 필터링하기
# filtered_files = [file for file in file_list if file_pattern in file]
filtered_files = [
file for file in file_list
if file_pattern in file and file.lower().endswith('.png')
]
# 파일 경로를 포함한 파일 리스트 생성 및 수정 시간 기준으로 정렬하기
filtered_files = sorted(
[os.path.join(folder_path, file) for file in filtered_files],
key=os.path.getmtime
)
# 파일들을 읽어와 images 리스트에 저장하기
images = []
for file_path in filtered_files:
print(file_path)
img = imageio.v2.imread(file_path)
img = Image.fromarray(img)
img = img.resize( (1920, 900))
img = np.array(img)
images.append(img)
if images:
# images 리스트를 이용하여 avi 파일 생성하기
output_path = os.path.join(out_path, file_pattern + '_ani.mp4')
# imageio-ffmpeg를 사용하여 avi 파일 생성
writer = imageio.get_writer(output_path, format='FFMPEG', fps=5, codec='mpeg4')
for img in images:
writer.append_data(img)
writer.close()
print(f"AVI 파일 생성 완료: {output_path}")
애니매이션 gif 로 동영상 만들기
import cv2
import imageio
# 변환할 GIF 파일 경로
input_gif_path = 'E:/temp/image_ani.gif'
# 저장할 MP4 파일 경로
output_mp4_path = 'E:/temp/image_ani2.mp4'
# GIF 파일을 imageio로 읽기
gif_reader = imageio.get_reader(input_gif_path)
# 첫 번째 프레임에서 영상의 크기(height, width) 가져오기
first_frame = gif_reader.get_data(0)
height, width, _ = first_frame.shape
# 프레임 속도(fps) 가져오기 (duration은 ms 단위이므로 1000을 나눠 초당 프레임으로 계산)
fps = 1000 / gif_reader.get_meta_data()['duration']
# OpenCV VideoWriter 객체 생성
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # mp4v 코덱
out = cv2.VideoWriter(output_mp4_path, fourcc, fps, (1920, 900)) # 화면 크기를 1920*900으로 설정
# GIF의 각 프레임을 읽어서 MP4로 저장
for frame in gif_reader:
# 이미지 크기를 1920x900으로 조정
frame = cv2.resize(frame, (1920, 900))
# imageio에서 가져온 이미지는 RGB이므로 OpenCV의 BGR로 변환
frame_bgr = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
out.write(frame_bgr) # MP4 파일에 프레임 추가
# 모든 작업 완료 후 자원 해제
out.release()
gif_reader.close()
print(f"MP4 파일 생성 완료: {output_mp4_path}")
728x90
반응형
'프로그램' 카테고리의 다른 글
[딥러닝] 지도학습 후 강화학습 (DeepSeek 알고리즘) (0) | 2025.02.04 |
---|---|
[파이썬] 유튜브 자막 가져오기 (5) | 2024.10.24 |
[파이썬] 문제 : 데이터에서 특정 데이터가 있으면 변경하기 (0) | 2024.07.31 |
[파이썬] 문제 : 이미지의 영역의 RGB값 평균 (0) | 2024.07.28 |
[파이썬] OpenGL의 3D 사각형을 시점 바꾸기 (2) | 2024.07.14 |
댓글