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