Ubuntu entornos de pitón transparente para el canal de vídeo que tiene un gran número de diferentes antecedentes alternativa

Ubuntu entornos de pitón transparente para el canal de vídeo que tiene un gran número de diferentes antecedentes alternativa

Introducción: A pesar de pr con el software de procesamiento de vídeo también puede ser una transparente para el canal de vídeo reemplazado con un fondo diferente, pero si desea reemplazar manualmente un centenar de uno mil este video, al parecer, las personas Ben operación colapso. Este artículo documenta cómo utilizar el video en el entorno pitón Ubuntu para sustituir a un gran número de canales tienen fondos transparentes, utilizan los principales proyectos de uso de registro y de entorno de configuración.

En primer lugar, la configuración del entorno

1.1 Descargar Código

GitHub código de script se ha presentado a la, por encima de la dirección del almacén: https: //github.com/huangjunxiong11/change_grounp1.1.0.git

También pegar en el código de script siguiente

import time
import shutil

import cv2
import os
from moviepy.editor import VideoFileClip, CompositeVideoClip

EXTRACT_FREQUENCY = 1


def extract(videopath, index=EXTRACT_FREQUENCY):
    video = cv2.VideoCapture()
    if not video.open(videopath):
        print("can not open the video")
        exit(1)
    count = 1
    while True:
        _, frame = video.read()
        if frame is None:
            break
        if count % EXTRACT_FREQUENCY == 0:
            index += 1
        count += 1
    video.release()
    print("Totally save {:d} pics".format(index - 1))
    a = index - 1
    return a


def copy_photo(photo_path, n):
    img = cv2.imread(photo_path, cv2.IMREAD_COLOR)
    path_photo = photo_path.split('.', 1)[0]

    try:
        os.mkdir(path_photo)
    except OSError:
        pass
    for i in range(n):
        name = path_photo + '/' + (str(i)).zfill(4) + '.png'
        cv2.imwrite(name, img)
    return path_photo


def become_video(fg_in_bg, name1):
    cap = cv2.VideoCapture(name1)
    fgs = int(cap.get(cv2.CAP_PROP_FPS))
    pictrue_in_filelist = os.listdir(fg_in_bg)
    pictrue_in_filelist.sort(key=lambda x: int(x[:-4]))
    name = fg_in_bg + "/" + pictrue_in_filelist[0]
    img = cv2.imread(name)
    h, w, c = img.shape
    size = (w, h)

    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out_video = name1.split('.', 1)[0] + 'out.avi'
    video_writer = cv2.VideoWriter(out_video, fourcc, fgs, size)

    for i in range(len(pictrue_in_filelist)):
        pictrue_in_filename = fg_in_bg + "/" + pictrue_in_filelist[i]
        img12 = cv2.imread(pictrue_in_filename)
        video_writer.write(img12)
    video_writer.release()
    return out_video


def add_zm(fg_in_bg_avi, zm_video_path, i):
    clip1 = VideoFileClip(fg_in_bg_avi)
    clip3 = VideoFileClip(zm_video_path, has_mask=True)
    video = CompositeVideoClip([clip1, clip3])
    try:
        os.mkdir("out")
    except OSError:
        pass

    out_name = "out/" + zm_video_path.split('.', 1)[0] + "out"

    name = out_name + i + ".mp4"
    video.write_videofile(name, audio=True)  # 先不加音频
    video.close()
    return name


if __name__ == '__main__':

    start = time.clock()

    mova = 'youheng.mov'
    pictrue_path = "input"
    n = extract(mova)

    bg_list = os.listdir(pictrue_path)

    bg_list.sort(key=lambda x: int(x[2:-4]))

    for _ in bg_list:
        for_mat = _.split('.', 1)[-1]
        for_name = _.split('.', 1)[0]

        print("开始处理" + for_name)

        name1 = pictrue_path + '/' + _
        if for_mat == 'png' or for_mat == 'jpg':
            path_photo = copy_photo(name1, n)

            video = become_video(path_photo, mova)

            name = add_zm(mova.split('.', 1)[0] + 'out.avi', mova, for_name)

            shutil.rmtree(path_photo)
            os.remove(mova.split('.', 1)[0] + 'out.avi')  # 中间产物
            print("完成" + name)
        else:
            # 如果背景里面有视频
            pass

    end = time.clock()

    print('Running time: %s Seconds' % (end - start))

1.2 Kit de herramientas para crear e instalar un entorno virtual

Con el fin de no afectar el uso de kits de herramientas entre diferentes proyectos, tenemos que crear un entorno virtual. En Ubuntu, recomiendo el uso de anaconda de comandos para crear CONDA. comando en el terminal:

conda create -n envname python=3.6  # 创建python3.6版本名字为envname的虚拟环境

Entra en el entorno virtual, y las instalaciones necesarias para funcionar Kit

conda activate envname  # 进入虚拟环境
pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple  # 使用pip在清华镜像源下载安装工具包

En segundo lugar, el uso de proyecto

preparación de datos 2.1

El primer paso, el vídeo tiene un camino claro hacia el siguiente archivo de script el directorio hermano change_grounp.py garantizar formato de vídeo del canal transparente está formato mov, el segundo paso, la imagen de fondo en los archivos de change_grounp.py la misma carpeta de entrada de directorio, y para asegurar que el tamaño de la anchura de la imagen y la altura que el tamaño del vídeo.

Ejemplos de fotos y vídeo al sitio Web para descargar: link: https: //pan.baidu.com/s/1kRvAqtXDPVGfWIRJH6CgvQ

código de extracción: srpy

2.2 para ejecutar el programa

comando de terminal es el siguiente:

python change_grounp.py

En tercer lugar, los resultados muestran

Aquí Insertar imagen Descripción

Publicado 45 artículos originales · ganado elogios 24 · vistas 3398

Supongo que te gusta

Origin blog.csdn.net/my_name_is_learn/article/details/104813979
Recomendado
Clasificación