RealBasicVSR高清处理视频

2023-12-17 23:43:56
autodl做了镜像:高清RealBasicVSR
首先在剪映将视频剪好导出,最多是720像素的,不然后面超分的时候会爆显存。剪映视频也最好是双数帧数结尾的,不然超分的时候单数图片会报错->RuntimeError: non-empty 3D or 4D input tensor expected but got ndim: 4
首先使用脚本把视频分割成图片
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 inference_realbasicvsr.py configs/realbasicvsr_x4.py checkpoints/RealBasicVSR_x4.pth data/ss3720 results/ss3720  --max_seq_len=2
超分后使用~/RealBasicVSR-master/results,下的脚本进行图片合成视频(要改脚本里的文件路径)
python image2video.py
参考网址:https://blog.csdn.net/zhiweihongyan1/article/details/124645615

文章来源:https://blog.csdn.net/m0_50685012/article/details/135051533
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。