【问题标题】:Resize and crop an image using ImageJ使用 ImageJ 调整图像大小和裁剪图像
【发布时间】:2023-03-09 20:40:01
【问题描述】:

我正在尝试使用 ImageJ 调整图像大小和裁剪图像。代码如下:

ImagePlus ip1 = IJ.openImage("_Pic.jpg");
ImagePlus ip2 = IJ.openImage("_Pic.jpg");

ImageProcessor imgP1 = ip1.getProcessor();
ImageProcessor imgP2 = ip2.getProcessor();

FileSaver fs1 = new FileSaver(ip1);
FileSaver fs2 = new FileSaver(ip2);

/* Trying to resize */
imgP1.resize(100); // also tried with width and height
fs1.saveAsJpeg("Resized.jpg");

/* Trying to crop */
imgP2.setRoi(100, 100, 200, 200);
imgP2.crop();
fs2.saveAsJpeg("Cropped.jpg");

很遗憾,新创建的文件与原始文件相同。

到目前为止,我已经发现了如何模糊、平滑、反转、平移、旋转……,但这两个让我很难受。有人有想法吗?

【问题讨论】:

  • 你的例子有很多问题。类ImagePlus 不存在resize() 方法。 imgP12imgP13 未定义。等等......我建议在开发 Java 代码时使用像 Eclipse 这样的 IDE。另外,请查看Javadoc。最后,对于 ImageJ 特定的问题,最好在ImageJ forum 上提问。
  • @JanEglinger 感谢您的评论。我以某种方式打错了...我在imgP12imgP13 上使用resize() 方法,这应该是ImageProcessor 实例(而不是imgP1imgP2)。我正在使用 Eclipse 并且没有语法错误,我只是在复制和粘贴时犯了一个错误..

标签: java image imagej


【解决方案1】:

Stefan Helfrich 在那里回答了您的cross-posted question to the ImageJ forum

如果您查看Javadocs for ImageProcessor,您会看到resize()crop() 返回新的ImageProcessor 实例并且不对this 进行操作。这就是为什么您必须使用ImagePlus.setProcessor(ImageProcessor) 方法将返回的ImageProcessors 添加到ip1ip2


像这样交叉发帖时,请始终包含指向其他帖子的链接,以便以后发现此问题的人有机会关注讨论。

【讨论】:

    【解决方案2】:

    圆形裁剪:https://youtu.be/OyiOFh1pD3k

    调整大小:https://youtu.be/N_jddMMhzqc

    合并两个代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 2022-07-13
      • 2011-11-11
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多