Пример #1
0
def SPExtractVideo(context):
    args = context.args

    inputFile = get_all_files(args.inputData)

    VideoEd.extract_video(inputFile[0], args.outputData, args.outputExt,
                          args.fps)

    return args.outputData
Пример #2
0
Файл: F.py Проект: wa407/YML
def prepare(workspace, detector="s3fd", manual_fix=False):
    import os
    import shutil
    from mainscripts import Extractor
    from mainscripts import VideoEd
    for f in os.listdir(workspace):
        ext = os.path.splitext(f)[-1]
        if ext not in ['.mp4', '.avi']:
            continue
        if f.startswith("result"):
            continue
        # 获取所有的data_dst文件
        tmp_dir = os.path.join(workspace, "_tmp")
        tmp_aligned = os.path.join(tmp_dir, "aligned")
        tmp_video_dir = os.path.join(tmp_dir, "video")
        if os.path.exists(tmp_dir):
            shutil.rmtree(tmp_dir)
        if not os.path.exists(tmp_dir):
            os.mkdir(tmp_dir)
            os.mkdir(tmp_video_dir)
        video = os.path.join(workspace, f)
        # 提取帧
        VideoEd.extract_video(video, tmp_dir, "png", 0)
        # 提取人脸
        if detector == "manual":
            import winsound
            winsound.Beep(300, 500)
        Extractor.main(tmp_dir,
                       tmp_aligned,
                       detector=detector,
                       manual_fix=manual_fix)
        # fanseg
        Extractor.extract_fanseg(tmp_aligned)
        if detector != "manual":
            #     # 两组人脸匹配
            #     skip_by_pitch(os.path.join(workspace, "data_src", "aligned"), os.path.join(tmp_dir, "aligned"))
            # 排序
            dfl.dfl_sort_by_hist(tmp_aligned)
        # 保存video
        shutil.copy(video, tmp_video_dir)
        # 重命名
        fname = f.replace(ext, "")
        dst_dir = os.path.join(workspace,
                               "data_dst_%s_%s" % (get_time_str(), fname))
        shutil.move(tmp_dir, dst_dir)
        # 移动video
        data_trash = os.path.join(workspace, "../trash_workspace")
        if not os.path.exists(data_trash):
            os.mkdir(data_trash)
        shutil.move(video, data_trash)
    import winsound
    winsound.Beep(300, 500)
Пример #3
0
 def process_videoed_extract_video(arguments):
     os_utils.set_process_lowest_prio()
     from mainscripts import VideoEd
     VideoEd.extract_video (arguments.input_file, arguments.output_dir, arguments.output_ext, arguments.fps)
Пример #4
0
 def process_videoed_extract_video(arguments):        
     from mainscripts import VideoEd
     VideoEd.extract_video (arguments.input_file, arguments.output_dir, arguments.output_ext, arguments.fps)
Пример #5
0
def extract():
    import os
    import shutil
    from mainscripts import VideoEd
    from mainscripts import Extractor
    from interact import interact as io

    root_dir = get_root_path()
    extract_workspace = os.path.join(root_dir, "extract_workspace")
    target_dir = os.path.join(extract_workspace, "aligned_")

    valid_exts = [".mp4", ".avi", ".wmv", ".mkv"]

    fps = io.input_int(
        "Enter FPS ( ?:help skip:fullfps ) : ",
        0,
        help_message=
        "How many frames of every second of the video will be extracted.")
    min_pixel = io.input_int("Enter Min Pixel ( ?:help skip: 512) : ",
                             512,
                             help_message="Min Pixel")

    def file_filter(file):
        if os.path.isdir(os.path.join(extract_workspace, file)):
            return False
        ext = os.path.splitext(file)[-1]
        if ext not in valid_exts:
            return False
        return True

    files = list(filter(file_filter, os.listdir(extract_workspace)))
    files.sort()
    pos = 0
    for file in files:
        pos += 1
        io.log_info("@@@@@  Start Process %s, %d / %d" %
                    (file, pos, len(files)))
        # 提取图片
        input_file = os.path.join(extract_workspace, file)
        output_dir = os.path.join(extract_workspace, "extract_images")
        if not os.path.exists(output_dir):
            os.mkdir(output_dir)
        for f in os.listdir(output_dir):
            os.remove(os.path.join(output_dir, f))
        VideoEd.extract_video(input_file,
                              output_dir,
                              output_ext="png",
                              fps=fps)
        io.log_info("@@@@@  Start Extract %s, %d / %d" %
                    (file, pos, len(files)))
        # 提取人脸
        input_dir = output_dir
        output_dir = os.path.join(extract_workspace, "_current")
        debug_dir = os.path.join(extract_workspace, "debug")
        Extractor.main(input_dir,
                       output_dir,
                       debug_dir,
                       "s3fd",
                       min_pixel=min_pixel)
        # fanseg
        io.log_info("@@@@@  Start FanSeg %s, %d / %d" %
                    (file, pos, len(files)))
        Extractor.extract_fanseg(output_dir)
        # 复制到结果集
        io.log_info("@@@@@  Start Move %s, %d / %d" % (file, pos, len(files)))
        if not os.path.exists(target_dir):
            os.mkdir(target_dir)
        ts = get_time_str()
        for f in os.listdir(output_dir):
            src = os.path.join(output_dir, f)
            dst = os.path.join(target_dir, "%s_%s" % (ts, f))
            shutil.move(src, dst)
        # 全部做完,删除该文件
        io.log_info("@@@@@  Finish %s, %d / %d" % (file, pos, len(files)))
        os.remove(os.path.join(extract_workspace, file))
        os.rmdir(output_dir)
Пример #6
0
 def process_videoed_extract_video(arguments):
     osex.set_process_lowest_prio()
     from mainscripts import VideoEd
     VideoEd.extract_video(arguments.input_file, arguments.output_dir,
                           arguments.output_ext, arguments.fps,
                           arguments.start_frame, arguments.end_frame)