问题描述
我尝试使用 ImageJ 库来处理图像。我的问题是,某些线程永远不会停止。 Eclipse 总是向我显示一个正在运行的活动线程。如果我将一个 > 0 的值传递给下面的函数,就会发生这种情况。似乎 ImageJ 在需要处理某些内容时会在内部打开一个线程(例如 blurGaussian(0.1))。
如何停止此线程?
我的代码:
public static BufferedImage preProcessBufferedImage(BufferedImage bufferedImage,double sigma) throws IOException {
ImagePlus imagePlus = new ImagePlus("",bufferedImage);
imagePlus.getProcessor().blurGaussian(sigma);
return imagePlus.getBufferedImage();
}
使用的库: https://mvnrepository.com/artifact/net.imagej/ij/1.53h
解决方法
ImagePlus.close() 怎么样?似乎这个类有一个关闭方法。使用它。
public static BufferedImage preProcessBufferedImage(BufferedImage bufferedImage,double sigma) throws IOException {
ImagePlus imagePlus = new ImagePlus("",bufferedImage);
BufferedImage blurredImage = imagePlus.getProcessor().blurGaussian(sigma).getBufferedImage();
imagePLus.close();
return blurredImage;
}
,
我遇到了同样的问题,我找到的唯一解决方案是在调用 blurGaussian 方法之前使用 ij.Prefs.setThreads(1);
。