Javascript ImageJ:.show()不显示图像

Javascript ImageJ:.show()不显示图像,javascript,imagej,Javascript,Imagej,我对javascript非常陌生,我想在斐济处理一些图像。我使用宏语言已经有一段时间了,但我正在尝试熟悉正式的ImageJ/斐济API。我试图运行下面这段过于简单的代码,它运行时没有错误,但最后没有显示任何图像。怎么了 importClass(Packages.ij.plugin.filter.GaussianBlur); var image = IJ.openImage("/home/.../KNIIC_BC_Cam2_AirBubble2_Image1038.bmp"); IJ.run(

我对javascript非常陌生,我想在斐济处理一些图像。我使用宏语言已经有一段时间了,但我正在尝试熟悉正式的ImageJ/斐济API。我试图运行下面这段过于简单的代码,它运行时没有错误,但最后没有显示任何图像。怎么了

importClass(Packages.ij.plugin.filter.GaussianBlur);


var image = IJ.openImage("/home/.../KNIIC_BC_Cam2_AirBubble2_Image1038.bmp");
IJ.run(image, "8-bit", "");

var dpl = image.getProcessor().duplicate();
var gs = new GaussianBlur();
gs.blur(dpl,20);
new ImagePlus(gs).show();

提前感谢

问题在于如何处理
ImagePlus
:在最后一行中,您尝试创建一个
新ImagePlus
,但这不可能包含加载图像的任何信息

GaussianBlur
处理一个
ImageProcessor
,您将通过
ImagePlus#getProcessor()
方法获得该处理器。如果您查看,您还将看到
blur(ImageProcessor,double)
被弃用,取而代之的是其他方法之一:您可能希望在此处使用
blur(ImageProcessor,double,double,double)

该代码将在以下情况下起作用:

importClass(Packages.ij.plugin.filter.GaussianBlur);

var imp = IJ.openImage("http://imagej.nih.gov/ij/images/clown.jpg");
IJ.run(imp, "8-bit", "");

var ip = imp.getProcessor();
var gs = new GaussianBlur();
gs.blurGaussian(ip,20,20,0.01);
imp.show();
但是,它使用低级别的方式来干扰
GaussianBlur
类。为了让您的生活更轻松,您还可以通过插件>宏>录制在GUI中录制javascript命令。。。然后选择Record:Javascript,然后通过Process>Filters>Gaussian blur执行高斯模糊。。。。这将使您的代码更短:

var imp = IJ.openImage("http://imagej.nih.gov/ij/images/clown.jpg");
IJ.run(imp, "8-bit", "");
IJ.run(imp, "Gaussian Blur...", "sigma=20");

imp.show();
有关ImageJ中Javascript脚本的一般帮助,请参阅斐济wiki的链接

编辑:从开始,
图像处理器
采用了一种新的方法模糊(双西格玛),将上述(低级)代码缩短为:


这和谢谢你有关吗,简!你的回答很有帮助,很有启发性!我知道这是一种“简单”的方法,但将来我需要计算菜单上无法使用的自定义内容,因此需要记录。我刚刚编辑了我的答案,以说明最近在ImageJ v1.47n中添加了
ImageProcessor.blurGaussian(double)
var imp = IJ.openImage("http://imagej.nih.gov/ij/images/clown.jpg");
IJ.run(imp, "8-bit", "");
imp.getProcessor().blurGaussian(20);
imp.show();