別の代替的背景の多数のビデオチャネルに透明のUbuntu環境のPython

別の代替的背景の多数のビデオチャネルに透明のUbuntu環境のPython

はじめに:ビデオ処理ソフトウェアとのPRにも別の背景に置き換えビデオチャネル用の透明なものであってもよいが、あなたがしたい場合は、手動で101000のこのビデオ、明らかに人々ベンの崩壊操作を置き換えることができますが。多数のチャネルを置き換えるためのUbuntu環境Pythonでビデオを使用する方法この記事の文書は、透明な背景を持っている主なレコード使用状況や設定環境プロジェクトを使用しています。

まず、環境設定

1.1ダウンロードコード

ます。https://github.com/huangjunxiong11/change_grounp1.1.0.git GitHubのスクリプトコードは、倉庫の住所、上記に提出されました

また、次のスクリプトコードを貼り付け

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ツールキット

異なるプロジェクト間のツールキットの使用に影響を与えないようにするために、我々は、仮想環境を作成する必要があります。Ubuntuのでは、私が作成するcondaコマンドのアナコンダを使用することをお勧めします。ターミナルコマンド:

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

仮想環境へのステップ、およびキットを実行するために必要なインストール

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

第二に、このプロジェクトの使用

2.1データの準備

最初のステップは、ビデオは、次の兄弟ディレクトリのスクリプトファイルに明確な経路を有する透明チャネルビデオフォーマットを確保change_grounp.py MOVフォーマットである。change_grounp.pyのファイルに第二段階、背景画像同じディレクトリ入力フォルダ、およびビデオのサイズなどの画像の幅と高さのサイズことを確実にします。

ダウンロードするWebサイトへの写真やビデオの例:リンクします。https://pan.baidu.com/s/1kRvAqtXDPVGfWIRJH6CgvQ

抽出コード:srpy

2.2プログラムを実行します

次のようにターミナルコマンドは次のとおりです。

python change_grounp.py

第三に、結果は

ここに画像を挿入説明

公開された45元の記事 ウォン称賛24 ビュー3398

おすすめ

転載: blog.csdn.net/my_name_is_learn/article/details/104813979