找回密码
 立即注册
查看: 2574|回复: 4

关于mask tools的问题

  • TA的每日心情
    开心
    2019-9-8 20:55
  • 签到天数: 874 天

    [LV.10]以坛为家III

    1

    主题

    43

    回帖

    0

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    231928
    Blue_Smith 发表于 2017-6-12 13:37:06 | 显示全部楼层 |阅读模式
        最近想直观的对比两个视频的差异,想到了用mask tools来融合两个视频。具体来说,就是融合后的视频左边半部分采用视频a,右边采用视频b。然而在vapoursynth的官网并没有找到类似的接口,只看到了几个识别线条和纹理的接口(比如TCanny和AWarpSharp2)。想请大佬指点一下应该怎么做。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-9-8 20:55
  • 签到天数: 874 天

    [LV.10]以坛为家III

    1

    主题

    43

    回帖

    0

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    231928
    Blue_Smith  楼主| 发表于 2017-6-12 13:40:20 | 显示全部楼层
    本帖最后由 Blue_Smith 于 2017-6-12 13:54 编辑

       目前想到了一个简单的办法,就是手动制作一个左半部分是纯黑、右半部分是纯白的 mask。实现如下:
    1. def Merge(clip1, clip2):
    2.         halfWidth = clip1.width >> 1
    3.         max = (1 << clip1.format.bits_per_sample) - 1
    4.         neutral = (max >> 1) + 1;
    5.         black = [0, neutral, neutral] #black in 8 bit yuv pc range is [0, 128, 128]
    6.         white = [max, neutral, neutral] #white in 8 bit yuv pc range is [255, 128, 128]
    7.         mask = core.std.BlankClip(clip1, width=halfWidth, height=clip1.height, color=black)
    8.         mask = core.std.AddBorders(mask, left=0, right=clip1.width-halfWidth, top=0, bottom=0, color=white)
    9.         merge = core.std.MaskedMerge(clip1, clip2, mask, planes=[0, 1, 2], first_plane=True)
    10.         return core.text.Text(merge, text="svp", alignment=7).text.Text(text="repeat count", alignment=9)
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-24 23:16
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    19

    主题

    351

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    8872
    cylx 发表于 2017-6-12 14:34:27 | 显示全部楼层
    只是要实现这种效果的话,简单的用StackHorizontal把两个视频裁剪后合并到一起不就完了。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-9-8 20:55
  • 签到天数: 874 天

    [LV.10]以坛为家III

    1

    主题

    43

    回帖

    0

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    231928
    Blue_Smith  楼主| 发表于 2017-6-12 17:25:06 | 显示全部楼层
    cylx 发表于 2017-6-12 14:34
    只是要实现这种效果的话,简单的用StackHorizontal把两个视频裁剪后合并到一起不就完了。 ...

    以前没注意StackHorizontal接口
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-9-8 20:55
  • 签到天数: 874 天

    [LV.10]以坛为家III

    1

    主题

    43

    回帖

    0

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    231928
    Blue_Smith  楼主| 发表于 2017-6-12 17:29:01 | 显示全部楼层
    cylx 发表于 2017-6-12 14:34
    只是要实现这种效果的话,简单的用StackHorizontal把两个视频裁剪后合并到一起不就完了。 ...

    而且实际上是想对中间部分做些简单的平滑过渡。直接暴力拼接的时候,如果生成帧和原帧不一样的话,中间会有一条线。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表