java - 线程中的异常 "main"java.lang.ClassCastException : [Ljava. lang.Object;无法转换到 [B

标签 java imagej

我尝试从 loci 工具读取图像并将其从 imagej 保存到 FileSaver 但是,我在运行时遇到了这个错误

ImagePlus[] imps = BF.openImagePlus("path/to/my/file");
for (ImagePlus imp : imps)new FileSaver(imp).saveAsRaw("E:/test.raw");

当我运行代码时,它显示

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [B
at ij.io.ImageWriter.write(ImageWriter.java:272)
at ij.io.FileSaver.saveAsRaw(FileSaver.java:494)
at Skripsi.dcmtoraw.main(dcmtoraw.java:16)

最佳答案

这是一个错误,尽管要确定该错误是在 ImageJ 1.x 中还是在 Bio-Formats 插件中并不重要。

In the ImageJ 1.x code ,当图像是堆栈时,ImageWriter 假设(未选中)像素数组是一个 Object[],当图像是堆栈时,则假设像素数组是 byte[]它是一个单一的图像平面。然而,似乎 Bio-Formats 生成的 ImagePlus 对象的像素为 Object[],即使对于单个平面也是如此。 (你的图像是一个平面吗?)

您可以使用 Bio-Formats Exporter 来解决此问题插件来保存您的数据。

或者您可以使用 ImageJ2 API,将使用SCIFIO在引擎盖下:

/**
 * Adapted from the
 * <a href="https://github.com/imagej/imagej-tutorials">ImageJ Tutorials</a>
 * {@code LoadAndDisplayDataset} tutorial.
 */
@Plugin(type = Command.class, menuPath = "Plugins>My Useful Command")
public class UsefulCommand implements Command {

  @Parameter
  private DatasetIOService datasetIOService;

  @Parameter
  private LogService log;

  @Parameter
  private File destination;

  @Parameter
  private Dataset image;

  @Override
  public void run() {
    try {
      image = datasetIOService.save(image, destination.getAbsolutePath());
    }
    catch (final IOException exc) {
      log.error(exc);
    }
  }

}

关于java - 线程中的异常 "main"java.lang.ClassCastException : [Ljava. lang.Object;无法转换到 [B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34660267/

相关文章:

java - 无法制作正确的表格,GPA 计算无法返回正确的成绩

java - log4j 无法写入文件

c++ - 半自动面部和眼睛检测

java - 从 eclipse 迁移到 vim 有什么好的教程吗?

java构造函数在实现中调用另一个被重写的构造函数

java - 如何隔离特定于平台的 JNA 绑定(bind)?

python - 如何从 Python 3.4.2 控制 ImageJ

java - 以编程方式使用 ImageJ 查找边缘

java - 使用 ImageJ 库 (Java) 增加图像对比度

java - "Make Binary"在单个图像和堆栈之间切换背景