我正在使用这里的模板。我有以下问题;
一般来说run,图像是final Img<T> image = (Img<T>)currentData.getImgPlus();。现在我必须转换image为floatArray并进行一些分析并将其转换回floatArray.
我可以将其转换floatArray为bufferedImage如下;
BufferedImage bufferedImage = new BufferedImage(imgHeight, imgWidth, BufferedImage.TYPE_INT_RGB);
for(int i = 0; i < imgHeight; i++) {
for(int j = 0; j < imgWidth; j++) {
Color myWhite= new Color(floatArray[i][j][0], floatArray[i][j][1], floatArray[i][j][2]);
int rgb = myWhite.getRGB();
bufferedImage.setRGB(i, j, rgb);
}
}
现在,如果我想用uiService.show(bufferedImage). 它不显示图像。但是,uiService.show(image)有效。
我的问题是:有没有办法直接显示bufferedImageusing uiService.show(). 如果没有,有没有办法转换floatArray回Img<T>,所以它可以通过uiService.show()函数显示?
更新:我只是尝试这样的事情并且它有效。但这需要保存图像并再次读取。但是,如果我们直接转换到那bufferedImage会Img<T>很棒,并且可能会减少运行时间。
final File file = new File("tmp.png");
if(file != null) {
try {
final Dataset dataset1 = ij.scifio().datasetIO().open(file.getPath());
ij.ui().show(dataset1);
uiService.show(dataset1.getImgPlus());
} catch (IOException e) {
e.printStackTrace();
}
}