这两天都在用IDL做可视化,然后就发现一个很严重的问题,IDL的动画输出只有GIF和MPEG,一个只有256色,不利于tvrd,另一个压缩的太严重,所以对于科学模拟来说都很恶心,效果很差
我尝试了一天之后还是决定放弃这个方法,转投无损格式。网上大多数的说法都是输出TIFF或者PNG,然后用软件做动画。这个当然是一个可行的好方法,但是稍显麻烦
最后我在网上找到了这个插件aviIDL63(很奇怪,我用Google搜索的时候居然只有两条记录,其中一个还是SiteAdviser的登记,我是在一个视频网站无意中看到的)
http://www.kilvarock.com/freesoftware/dlms/avi63plus.htm
下载下来之后,直接把dll和dlm拷贝到\RSI\IDL63\bin\bin.x86下面(非windows用户我也不知道怎么办,哈哈),压缩包里面剩下的就是例子。因为我没有找到网站有详细帮助,大概就得靠这些例子来摸索了吧(奇怪)。但是对于我们的一般应用来说,只要能用就OK。
我的例子:
在循环前面
avifile='e:\angv.avi'
fcchandler = 0
inoutdouble = 2
AVIgenObj=IDLtoAVIGENopenFile(avifile,600,500,codec=codec,framerate=10,quality=100,nBits=24)
if AVIgenObj eq -1 then return
if n_elements(codec) NE 0 then print,'codec on return = ',codec
注意framerate=10这个可以设置帧率,非常好
循环里面
status = IDLtoAVIGENaddFrame(AVIgenObj, tvrd(true=1))
循环后面
IDLtoAVIGENcloseFile,AVIgenObj
保存,运行,会出现一个选择编码器的框,里面包含电脑中有的所有编码器,一般选择全帧无压缩(要效果嘛,当然也可以选择什么H.263 Xvid ffmpeg这之类的电影爱好者所熟知的压缩格式,文件小但是效果会差一些,要是有H.264的HDTV1080P模式倒也是可以尝试的,哈哈)
剩下就是耐心等待了,当然还要做好足够的空间准备,无压缩的按照分辨率自己去算吧,24位一个像素。