绿幕视频合成

  用 前景/alpha matte 帧序列合成绿幕视频

# -*- coding: utf-8 -*-
# @Time : 2022/6/23 14:51
# @Author : lc
# @File : syn_green_video.py
# @Software: PyCharm
# @Function: Composite green screen video

import os
import torch
import cv2
import torchvision.transforms as transforms


def comGreenVideo(fgr_dir, pha_dir, save_dir, fps):
    forcc = cv2.VideoWriter_fourcc(*'mp4v')
    bg_green = torch.tensor([120, 255, 155]).div(255).view(3, 1, 1)  # green screen
    file_list = os.listdir(fgr_dir)
    for file in file_list:
        fgr_file_path = os.path.join(fgr_dir, file)
        pha_file_path = os.path.join(pha_dir, file)
        imgList = os.listdir(fgr_file_path)
        save_video_path = save_dir + file + ".mp4"
        img_init = cv2.imread(fgr_dir + file + "/00000.jpg", -1)
        saveH = img_init.shape[0]
        saveW = img_init.shape[1]
        video_output = cv2.VideoWriter(save_video_path, forcc, fps, (saveW, saveH), True)
        for img in imgList:
            fgr_path = fgr_file_path + "/" + img
            fgr = cv2.imread(fgr_path, -1)
            fgr = transforms.ToTensor()(fgr)
            pha_path = pha_file_path + "/" + img
            pha = cv2.imread(pha_path, -1)
            pha = transforms.ToTensor()(pha)
            com_green = fgr * pha + bg_green * (1 - pha)
            com_green = com_green.mul(255).byte().cpu().permute(1, 2, 0).numpy()
            video_output.write(com_green)
        print(file + ".mp4  Saved!")


if __name__ == "__main__":
    fps = 30
    fgr_dir = r"./fgr_jpg/"
    pha_dir = r"./mask/"
    save_dir = r"./video/"
    comGreenVideo(fgr_dir, pha_dir, save_dir, fps)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值