0

我对 imageJ 非常陌生,但对 Java 有一点了解。

本质上,我想从 OpenDialog 打开文件显示图像,然后模糊图像并显示生成的模糊图像。我的程序可以编译,但是这两个图像看起来一样。有人可以帮忙吗?如何让程序显示模糊和不模糊的图像?

import ij.*;
import ij.io.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.*;
import java.util.*;
import java.io.*;


public class opens_ implements PlugIn {

    ImagePlus imp;

    public void run(String arg){
    OpenDialog od = new OpenDialog("Open.....", arg);
    Opener op = new Opener();
    String directory = od.getDirectory();
    String filename = od.getFileName();
    if (filename==null) return ;
    imp =  op.openImage(directory, filename);
    imp.show(); 

    ImageProcessor improc = imp.getProcessor();
    improc.smooth();

    ImagePlus alter = new ImagePlus("alter", improc) ;
    alter.show();


    }

}

谢谢

贝特曼

4

1 回答 1

4

当您调用.smooth()on 时improc,该调用会更改 . 包含的图像数据ImageProcessor,而原始数据正在显示这些数据ImagePlusImagePlus然后你基于相同的创建一个新的ImageProcessor,所以它当然是模糊的图像而不是原始图像。如果您不希望更改原始内容,则可以复制ImageProcessor平滑之前的内容,例如通过更改行:

ImageProcessor improc = imp.getProcessor();

... 至:

ImageProcessor improc = imp.getProcessor().duplicate();

更新:当我测试你的代码时,我看到两个图像都是模糊的。如果您仍然看到原始图像,请尝试将以下内容添加到 run 方法的末尾:

imp.updateAndDraw()
alter.updateAndDraw()
于 2011-08-23T14:31:08.720 回答