二进制图像周长坐标超出范围-java
我正在尝试从二进制图像中获取周长,但我不断收到错误“java.lang.ArrayIndexOutOfBoundsException:”有人能确定我如何解决此问题吗二进制图像周长坐标超出范围-java,java,arrays,image,Java,Arrays,Image,我正在尝试从二进制图像中获取周长,但我不断收到错误“java.lang.ArrayIndexOutOfBoundsException:”有人能确定我如何解决此问题吗 int perimeter = 0; Raster raster = source.getRaster(); for (int i = 1; i<source.getHeight();i++){ for(int j =1; j<source.getWidth();j++){
int perimeter = 0;
Raster raster = source.getRaster();
for (int i = 1; i<source.getHeight();i++){
for(int j =1; j<source.getWidth();j++){
if(raster.getSample(j, i, 0) == 0){
if(raster.getSample(j+1, i, 0) == 1 || raster.getSample(j-1, i, 0) == 1 || raster.getSample(j, i+1, 0) == 1 || raster.getSample(j, i-1, 0) == 1){
perimeter++;
}
}
}
}
int周长=0;
光栅=source.getRaster();
对于(inti=1;i请尝试以下方法:
int perimeter = 0;
Raster raster = source.getRaster();
for (int i=1; i<source.getHeight()-1; i++) {
for (int j=1; j<source.getWidth()-1; j++) {
if (raster.getSample(j, i, 0) == 0) {
if (raster.getSample(j+1, i, 0) == 1
|| raster.getSample(j-1, i, 0) == 1
|| raster.getSample(j, i+1, 0) == 1
|| raster.getSample(j, i-1, 0) == 1) {
perimeter++;
}
}
}
}
int周长=0;
光栅=source.getRaster();
对于(int i=1;Itis works!:)我知道我做错了什么,谢谢!将接受你作为正确答案很高兴提供帮助!我添加了一些注释,以防其他人看到此页面。你尝试过调试代码吗?你考虑过图像边缘条件吗?