绿幕视频合成

  用 前景/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
    评论
要使用FFmpeg进行视频扣绿合成背景,可以使用以下命令: ffmpeg -loop 1 -i default_bg.png -i video.mp4 -filter_complex "\[1:v\]chromakey=0x70de77:0.1:0.01\[ckout\];\[0:v\]\[ckout\]overlay=0:0:shortest=1,format=yuv420p" -c:a copy -y output.mp4 这个命令的目的是将default_bg.png作为一个绿幕视频video.mp4的背景。首先,使用-loop 1启用循环,因为背景图片只有一帧,将它设置为直到视频流结束不停循环。然后,使用-i default_bg.png设置第一个输入,即背景图。接下来,使用-i video.mp4设置第二个输入,即视频。使用-filter_complex来配置FFmpeg的滤镜。\[1:v\]chromakey=0x70de77:0.1:0.01将颜色0x70de77转化为透明,相似度0.1,模糊度0.01。\[ckout\]将该滤镜的输出设置为\[ckout\]变量。\[0:v\]\[ckout\]overlay=0:0:shortest=1,format=yuv420p将\[ckout\]流放到第0个输出的视频流上,偏移位置为x:0,y:0,输出格式为yuv420p。最后,使用-c:a copy -y output.mp4解码音频并输出为output.mp4。 这样,你就可以使用FFmpeg将绿幕视频合成到指定的背景上了。 #### 引用[.reference_title] - *1* *3* [[原创]JAVA FFMPEG 绿幕 设置背景 添加图标](https://blog.csdn.net/jiangyv1718/article/details/125205296)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [视频基础知识汇总](https://blog.csdn.net/byxdaz/article/details/80640191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值