本页为 NMM视频技术(旧)论坛(2004–2012)的只读存档,无法登录或发帖。欢迎前往 新论坛 交流。

NMM视频技术(旧)

查看: 10558回复: 12
打印 上一主题 下一主题

求一款彩色渐变为黑白的滤镜

[复制链接]
oldcat881
跳转到指定楼层
1楼
发表于 2009-6-3 23:18 只看该作者 回帖奖励 倒序浏览 阅读模式
小弟初涉avs,诚请前辈推荐一款彩色渐变为黑白及黑白还原成彩色的滤镜。还请大大帮小弟写出语句的范例。谢谢先
dgwxx
2楼
发表于 2009-6-5 11:21 只看该作者
貌似没有这种滤镜吧……不过,有一种曲线救国的方式,我先说思路吧。
1.先将影片分两段,后半段留出渐变需要的帧(需要渐变的秒数×fps=帧数),将后半段用Greyscale()转换成黑白。
2.算好时间,用fade将两段影片连接起来。
总帧数不变的话不用担心音频不同步。不过说实在的,我不推荐用avs进行这种编辑,脚本写起来太麻烦。不如直接用AE之类的来做了。
VempX
3楼
发表于 2009-6-5 20:51 只看该作者
如果编码器里有黑白模式的话,勾上就行了
dgwxx
4楼
发表于 2009-6-5 23:15 只看该作者
3# VempX
我觉着楼主不是想要把彩色画面变成黑白的,而是想做成彩色逐渐变成黑白的那种动态效果。
oldcat881
5楼
 楼主 发表于 2009-6-6 09:49 只看该作者
感谢dgwxx为我解答。(悄悄地告诉你:俺是你的粉丝)

fadeout的color参数我不会设置成透明,带着颜色(也就是out后的最终色)叠加,效果估计不佳。调试了几次,不甚满意。
按你的思路,我把fade换成了dissolve,除audio有点卡外,video部分衔接及色彩过度皆相当完美。音频好在可以另行处理。

你说的AE是After Effect吗?我还不曾接触过。能告知我当前普遍在使用的是哪一版本?有教材推荐就更好了。

谢谢VempX大大的热心
dgwxx
6楼
发表于 2009-6-7 12:51 只看该作者
哇……我都有粉丝了
AE是After Effect,我也没用过= =||完全的外行一个~
diseac
7楼
发表于 2009-6-7 20:22 只看该作者
我用的AE是CS4。
说句废话:没试过制作楼主所说的这样的渐变,所以不太清楚。
比较残念的是AE的有关deinterlace的滤镜和各种插件没有一个好使的。
oldcat881
8楼
 楼主 发表于 2009-6-8 19:38 只看该作者
diseac,是那个推动了世界进步的懒人?荣幸,荣幸...
zhzq674436
9楼
发表于 2009-6-9 17:03 只看该作者
本帖最后由 zhzq674436 于 2009-6-9 17:06 编辑

只能等待高人开发这种滤镜了
lititude
10楼
发表于 2009-6-10 12:55 只看该作者
本帖最后由 lititude 于 2009-6-10 12:57 编辑

把一张白的bmp fad过去当mask
mt_merge(y=1,u=3,v=3)这样?

等等还没实践过
lititude
11楼
发表于 2009-6-11 13:27 只看该作者
嗯我败了...mt_merge还是不会用
  1. so=avisource("E:\encoder\eden\OP.avi",audio=false)
  2. so1=so.Greyscale()
  3. count=FrameCount(so)
  4. rate=framerate(so)
  5. wid=width(so)
  6. hei=height(so)
  7. bmp=BlankClip(length=count,width=wid,height=hei,fps=rate,color=$FFFFFF,pixel_type="YV12").fadein(60,fps=rate)

  8. mm=mt_merge(so,so1,bmp,chroma="process")

  9. return(mm)
复制代码
lititude
12楼
发表于 2009-8-6 22:00 只看该作者
用animiate也实现了
我找到了3种方法
1
  1. function opp(clip so , float op)
  2. {
  3. grey=so.greyscale()
  4. overlay(so,grey,opacity=op)
  5. }
  6. animate (so,0,100,"opp",0.0,1.0)
复制代码
用了animate和overlay,overlay可以设置透明度。

2
  1. animate(50,70,"merge",so,so.greyscale(),0.0,so,so.greyscale(),1.0)
复制代码
用了animate和merge,同样是用透明度。

上面两种透明度的参数是从0.0->1.0,如果是0->1的话,不会有效果的...

3
  1. function transC2G(clip so , int fcs , int fcl)
  2. {
  3.     grey=so.greyscale().trim(fcs-fcl+1,0)
  4.     so2=so.trim(0,fcs+fcl-1)
  5.     dissolve(so2,grey,fcl*2-1)
  6.    
  7.     return last
  8. }
  9. transC2G(so,500,200)
复制代码
用了dissolve,把一段分成彩色和黑白两段,dissolve过去。
yomi
13楼
发表于 2009-9-20 00:18 只看该作者
此地牛人颇多,liti大好厉害

小黑屋手机版NMM视频技术

GMT+8, 2026-10-11 12:23 , Processed in 0.021072 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.