Blue_Smith 发表于 2017-6-12 13:37:06

关于mask tools的问题

    最近想直观的对比两个视频的差异,想到了用mask tools来融合两个视频。具体来说,就是融合后的视频左边半部分采用视频a,右边采用视频b。然而在vapoursynth的官网并没有找到类似的接口,只看到了几个识别线条和纹理的接口(比如TCanny和AWarpSharp2)。想请大佬指点一下应该怎么做。

Blue_Smith 发表于 2017-6-12 13:40:20

本帖最后由 Blue_Smith 于 2017-6-12 13:54 编辑

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

cylx 发表于 2017-6-12 14:34:27

只是要实现这种效果的话,简单的用StackHorizontal把两个视频裁剪后合并到一起不就完了。

Blue_Smith 发表于 2017-6-12 17:25:06

cylx 发表于 2017-6-12 14:34
只是要实现这种效果的话,简单的用StackHorizontal把两个视频裁剪后合并到一起不就完了。 ...

以前没注意StackHorizontal接口{:4_696:}

Blue_Smith 发表于 2017-6-12 17:29:01

cylx 发表于 2017-6-12 14:34
只是要实现这种效果的话,简单的用StackHorizontal把两个视频裁剪后合并到一起不就完了。 ...

而且实际上是想对中间部分做些简单的平滑过渡。直接暴力拼接的时候,如果生成帧和原帧不一样的话,中间会有一条线。
页: [1]
查看完整版本: 关于mask tools的问题