我正在使用这里的模板。我有以下问题;
一般来说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)
有效。
我的问题是:有没有办法直接显示bufferedImage
using 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();
}
}