0

我正在使用这里的模板。我有以下问题;

一般来说run,图像是final Img<T> image = (Img<T>)currentData.getImgPlus();。现在我必须转换imagefloatArray并进行一些分析并将其转换回floatArray.

我可以将其转换floatArraybufferedImage如下;

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(). 如果没有,有没有办法转换floatArrayImg<T>,所以它可以通过uiService.show()函数显示?

更新:我只是尝试这样的事情并且它有效。但这需要保存图像并再次读取。但是,如果我们直接转换到那bufferedImageImg<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();
    }
}
4

0 回答 0