我是 java 和 imageJ 的新手。我已经加载了一个图像并获得了一个名为imgproc的 ImageProcessor 。我在图像中找到了围绕特征的边界/框。外面只是背景。我还找到了这个区域的像素矩阵。现在我试图只处理图像中的这个区域。并且要使用以前的现有代码(方法)来做到这一点,我的输入参数应该是一个 ImageProcessor。所以,我最初的想法是使用 duplicate() 方法来制作imgproc的副本。并使用 resize 方法将其缩小到我之前找到的框的大小。但这不起作用,因为我使用显示图像方法进行了测试,所以我必须显示它。我得到的只是一张缩小的黑色图片。这个最初的想法编码在这里:
ImageProcessor Whiteimproc=imgproc.duplicate();
ImageProcessor BWhiteimproc=Whiteimproc.resize(BWhiteMatrix.length,BWhiteMatrix[0].length);
BWhiteimproc.setIntArray(BWhiteMatrix);
//the next three lines are going to show the image
Image ImagetoShow=BWhiteimproc.createImage();
Img ShowImg= new Img();
ShowImg.imgFrame(ImagetoShow,"BWhite");`
然后我尝试使用 ImagePlus 并创建一个新的 ImageProcessor。它奏效了。如下所示:
ImagePlus imgWhite=IJ.createImage("white","jpg",BWhiteMatrix.length,BWhiteMatrix[0].length,1);
ImageProcessor BWhiteimproc=imgWhite.getProcessor();
BWhiteimproc.setIntArray(BWhiteMatrix);
//the next three lines are going to show the image
Image ImagetoShow=BWhiteimproc.createImage();
Img ShowImg= new Img();
ShowImg.imgFrame(ImagetoShow,"BWhite");
有人能帮我解决为什么吗?而且我知道为什么我不能使用 ImageProcessor 来定义 ImageProcessor 类的新对象。
谢谢