我在ImageJ中有一些插件可以查看颜色(RGB或HSB)之间的关系,以便对图像进行分段。它们运行良好,但非常通用,并且在对话框中定义了相当多的复选框和滑块。
我很快就需要手动浏览数百张图像,但我希望能够查看图像并加载给定的预设,这样我才能对设置进行微调。我想添加一系列按钮或下拉菜单,选择后,将所有复选框/滑块的设置更改为该设置中定义的预设值。
下面是我如何定义对话框,但大约有20%的正常设置框/滑块。
import ij.*;
import ij.gui.*;
import ij.process.*;
import ij.plugin.filter.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.lang.Math.*;
public class Hue_colors_filter_ implements ExtendedPlugInFilter, DialogListener {
//private ImagePlus imp; // Original image
private ImageStack sstack; // Stack result
private int width; // Width of the original image
private int height; // Height of the original image
private int size; // Total number of pixels
private float[] c1, c2, c3; // Colour space values
private float[] rf, gf, bf; // r, g, b values
private String colourspace; // Colour space chosen
private String title; // Name of the original image
private String n1, n2, n3; // Names for every layer on the stack
private int r,g,b; // rgb values as integers
ImagePlus imp = null;
private static int black = 10;
private static boolean blackshow = true;
private static boolean magentashow = true;
public int setup(String arg, ImagePlus imp) {
if (imp == null) {
IJ.noImage();
return DONE;
}
if (arg.equals("about")) {
showAbout();
return DONE;
}
this.imp = imp;
return DOES_RGB;
}
public int showDialog(ImagePlus imp, String command, PlugInFilterRunner pfr) {
GenericDialog gd = new GenericDialog(command);
gd.addSlider("Black_max: ", 0., 256., black);
gd.addCheckbox("_Black", blackshow);
gd.addCheckbox("_Magenta", magentashow);
gd.addPreviewCheckbox(pfr);
gd.addDialogListener(this);
gd.showDialog();
if (gd.wasCanceled()) return DONE;
IJ.register(this.getClass());
return IJ.setupDialog(imp, DOES_RGB);
}
public boolean dialogItemChanged(GenericDialog gd, AWTEvent e) {
black = (int)gd.getNextNumber();
blackshow = gd.getNextBoolean();
magentashow = gd.getNextBoolean();
return true;
}
public void run(ImageProcessor ip) {
try{
//do some stuff
} // end of try
catch(Exception e){
IJ.error("Runtime Error", e.getMessage());
}
}
public void setNPasses (int nPasses) {
}
public void showAbout() {
IJ.showMessage("Hello World!");
}
}
如果你不能说我非常喜欢java newb。任何帮助或指针赞赏。
答案 0 :(得分:0)
setup
方法接收ImagePlus
作为参数。在那里检查,然后根据您的检查,根据需要设置参数(black
,blackshow
,magentashow
等)。然后会调用showDialog
方法,并且您的代码已经设置为将参数的初始值正确传递到GenericDialog
。所以你应该全力以赴。