java - 我想在 imageJ 中显示模糊图像。为什么这不起作用?

标签 java imagej

我对 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();


    }

}

谢谢

贝特曼

最佳答案

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

ImageProcessor improc = imp.getProcessor();

...至:

ImageProcessor improc = imp.getProcessor().duplicate();
<小时/>

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

imp.updateAndDraw()
alter.updateAndDraw()

关于java - 我想在 imageJ 中显示模糊图像。为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7162092/

相关文章:

java - 如何通知用户需要注意 JTabbedPane 中的特定选项卡?

Java 和 Myro 突破游戏计划提前结束

java - 找不到斯坦福 C++ 库的文件 'spl.jar'

java - 重新打开 ImagePlus 文件 (imageJ)

linux - ImageJ 插件的问题

java - ImageJ:在 JAVA 中使用 run() 执行命令

java - JPopupMenu.setDefaultLightWeightPopupEnabled(false) 不起作用

java - 日期选择器上的 nullPointerException

java - 在无限循环内显示命令提示符

ubuntu - fiji imagej 在 Ubuntu 16.04 上崩溃