画像の白い背景を削除して別の画像として保存したいと思います。 背景を抽出するコードを書きましたが、ピクセル値の一部が残っています。 チェックアウト元画像:画像の白い背景を削除するには - java
それはまだ白い背景のいくつかの量を残します。
これも削除したいと思います。
int x1=0;
int y1=0;
boolean res = false;
System.out.println("in formatImage");
// Widhtの取り外し...
for (int y = 0; y <= h-1; y++) {
System.out.println("Y = "+y);
for (int x = 0; x <= x1-1; x++) {
System.out.println("("+x+","+y+") : "+b21.getRGB(x, y));
if (!new Color(b21.getRGB(x, y)).equals(Color.WHITE)) {
res = true;
}
if (res) {
for (int p = 0; p <= x1-1; p++) {
b31.setRGB(p,y1,new Color(b21.getRGB(p, y)).getRGB());
}
y1++;
res = false;
break;
}
}
}
b31=new BufferedImage(x1,y1,BufferedImage.TYPE_INT_RGB);
int ty=y1;
y1=0;
for (int y = 0; y <= h-1; y++) {
for (int x = 0; x <= x1-1; x++) {
if (!new Color(b21.getRGB(x, y)).equals(Color.WHITE)) {
res = true;
}
if (res) {
for (int p = 0; p <= x1-1; p++) {
b31.setRGB(p,y1,new Color(b21.getRGB(p, y)).getRGB());
}
y1++;
res = false;
break;
}
}
}
B31は、最終的なイメージを持っている
for (int x = 0; x <= w-1; x++) {
for (int y = 0; y <= h-1; y++) {
if(new Color(bi1.getRGB(x, y)).getRGB()==-1)
{res=false;}
else if (!new Color(bi1.getRGB(x, y)).equals(Color.WHITE)) {
res = true;
}
if (res) {
for (int p = y; p <= h-1; p++) {
b21.setRGB(x1,p,new Color(bi1.getRGB(x, p)).getRGB());
}
x1++;
res = false;
break;
}
}
}
b21=new BufferedImage(x1,h,BufferedImage.TYPE_INT_RGB);
x1=0;
for (int x = 0; x <= w-1; x++) {
for (int y = 0; y <= h-1; y++) {
if(new Color(bi1.getRGB(x, y)).getRGB()==-1)
{res=false;}
else if (!new Color(bi1.getRGB(x, y)).equals(Color.WHITE)) {
res = true;
}
if (res) {
for (int p = 0; p <= h-1; p++) {
b21.setRGB(x1,p,new Color(bi1.getRGB(x, p)).getRGB());
}
x1++;
res = false;
break;
}
}
}
//身長の除去:
は、ここに私のコードです。
「白い背景を削除する」とはどういう意味ですか?あなたは本当に***画像をトリミングする***を求めていますか?それはあなたのコードがしているようです。何が効いていないのですか?白い背景のどの部分が削除されていないのですか?あなたの質問は不明です。 –
近くの手の背景が削除されていません。画像をダウンロードして確認することもできます –