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

关于mask tools的问题

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)。想请大佬指点一下应该怎么做。
回复

使用道具 举报

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)
复制代码
回复

使用道具 举报

19

主题

351

回帖

0

VC币

中级会员

Rank: 3Rank: 3

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

使用道具 举报

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接口
回复

使用道具 举报

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把两个视频裁剪后合并到一起不就完了。 ...

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

使用道具 举报

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

本版积分规则

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