0

セグメント化された画像で、次のような 2D ブール配列があります。

 000000000000000000
 000000011110000000
 000001110111100000
 000001111110100000
 000000111101100000
 000000111011000000

そして、写真をトリミングして、次のように特定のサイズにサイズ変更したい:

 00111100
 11101111
 11111101
 01111011
 01110110

BufferedImage を使用して保存し、getSubimage() を使用しようとしましたが、境界を正しく取得できません...

また、バッファリングされた画像のコアがあるこの方法を試しました:

            int Width = buffer.getWidth();
            int Height = buffer.getHeight();
            int x1= (int) (core.getX()) - (Width/2);
            int y1= (int)(core.getY()) - (Height/2);
            buffer = buffer.getSubimage(x1, y1, Width, Height); 

トリミングしてサイズを変更するにはどうすればよいですか?

4

1 に答える 1

0
    int [][] arr ={ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
     {0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0},
     {0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,0,0},
     {0,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0},
     {0,0,0,0,0,0,1,1,1,1,0,1,1,0,0,0,0,0},
     {0,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,0,0} };



    int lowHorizontal =arr[0].length; // give it length of columns "how many columns
    int highHorizontal =0;

    for(int i=0; i<arr.length; i++){
        for(int j=0; j<arr[0].length; j++){

            if(arr[i][j] == 1 ){
                if(lowHorizontal > j) 
                    lowHorizontal = j;
            }
        }
    }

    for(int i=arr.length-1; i>=0; i--){
        for(int j=arr[0].length-1; j>=0; j--){
            if(arr[i][j]==1){
                if(highHorizontal < j)
                    highHorizontal = j;
            }
        }
    }


    for(int i=0; i<arr.length; i++){
        for(int j=lowHorizontal; j<=highHorizontal; j++){
            System.out.print(arr[i][j] +" ");
        }
        System.out.println();
    }

このコードは水平方向のインデックスを計算しますが、もっと良い方法があると確信しています。同じことを適用して、垂直インデックスを計算してみてください。

印刷時のjのインデックスは境界内にある必要があるため、j <= highHoを配置する理由...これは上記のコードの出力です

0 0 0 0 0 0 0
0 0 1 1 1 1 0
1 1 1 0 1 1 1 
1 1 1 1 1 1 0 
0 1 1 1 1 0 1 
0 1 1 1 0 1 1 
于 2015-04-18T23:36:29.827 に答える