autodl做了镜像:高清RealBasicVSR
首先在剪映将视频剪好导出,最多是720像素的,不然后面超分的时候会爆显存。剪映视频也最好是双数帧数结尾的,不然超分的时候单数图片会报错->RuntimeError: non-empty 3D or 4D input tensor expected but got ndim: 4
首先使用脚本把视频分割成图片
python
import cv2
import os
# 视频文件所在目录
video_directory = r'D:\hc\dongtaibizhi\test'
# 获取目录中所有的mp4文件
video_files = [f for f in os.listdir(video_directory) if f.endswith('.mp4')]
for video_file in video_files:
video_path = os.path.join(video_directory, video_file)
# 创建以视频名命名的文件夹来保存图片
output_folder = os.path.join(video_directory, os.path.splitext(video_file)[0])
os.makedirs(output_folder, exist_ok=True)
# 打开视频文件
cap = cv2.VideoCapture(video_path)
# 获取视频的原始帧率
original_fps = int(cap.get(cv2.CAP_PROP_FPS))
# 计算每秒需要提取的帧数
frames_per_second = 30
# 计算跳帧间隔
frame_skip = max(1, original_fps // frames_per_second)
# 初始化帧计数器
frame_count = 0
while True:
ret, frame = cap.read()
if not ret:
break
if frame_count % frame_skip == 0:
# 保存图片
image_filename = os.path.join(output_folder, f'frame_{frame_count:04d}.jpg')
cv2.imwrite(image_filename, frame)
frame_count += 1
# 释放视频对象
cap.release()
print(f'已成功保存 {video_file} 的图片到 {output_folder}')
比如说现在图片集都放在ss3720这个文件夹里,那么运行命令进行图片高清化
python
python inference_realbasicvsr.py configs/realbasicvsr_x4.py checkpoints/RealBasicVSR_x4.pth data/ss3720 results/ss3720 --max_seq_len=2
超分后使用~/RealBasicVSR-master/results,下的脚本进行图片合成视频(要改脚本里的文件路径)
python
python image2video.py