条件
已有场景数据:
videos中含34个不同视角拍摄的同一动作视频
cams中为34个不同视角对应的相机参数:内外参+焦距
思考
如何利用动态视频 完成用于处理静态场景的3D gaussian?
-
每个视角的对应帧 -> 合成一个文件夹 即34张图片 34个视角
-
暴力做法:单目视频
看上去第一种比较靠谱一点,试试就逝世(bu)
视频转帧
设定30fps
import cv2
import os
def extract_frames(video_path, output_folder):
# 打开视频文件
video = cv2.VideoCapture(video_path)
# 获取视频的帧率
fps = video.get(cv2.CAP_PROP_FPS)
# 计算帧间隔
frame_interval = round(fps / 30) # 每秒 30 帧
# 初始化帧计数器
frame_count = 0
# 逐帧读取视频并保存帧序列
while True:
ret, frame = video.read()
# 如果无法读取到帧,则退出循环
if not ret:
break
# 按帧间隔保存帧
if frame_count % frame_interval == 0:
frame_filename = f"{output_folder}/{frame_count:05d}.jpg"
cv2.imwrite(frame_filename, frame)
frame_count += 1
# 释放资源
video.release()
def process_videos(input_folder, output_folder):
# 遍历输入文件夹中的所有文件
for filename in os.listdir(input_folder):
# 检查文件是否为视频文件
if filename.endswith(".mp4"):
video_path = os.path.join(input_folder, filename)
video_name = os.path.splitext(filename)[0]
video_output_folder = os.path.join(output_folder, video_name)
# 创建视频的输出文件夹