5

既存の色付きの BufferedImage をモノクロに変換するにはどうすればよいですか? 画像を黒と白の 2 つの RGB コードのみに完全に分割したいと考えています。そのため、背景の明るい色合いまたは暗い色合いである画像の周りに境界線があり、背景が白に変換されている場合は、境界線も白に変換する必要があります。

これどうやってするの?

イメージを保存する/ディスクからロードする必要がある場合は、必要に応じて実行できます。

編集:これをテストするコード:

package test;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashSet;
import javax.imageio.ImageIO;

public class Test
{
    public static void main(String[] args)
    {
        try
        {
            BufferedImage img = ImageIO.read(new File("http://i.stack.imgur.com/yhCnH.png") );
            BufferedImage gray = new BufferedImage(img.getWidth(), img.getHeight(),
                    BufferedImage.TYPE_BYTE_GRAY);

            Graphics2D g = gray.createGraphics();
            g.drawImage(img, 0, 0, null);

            HashSet<Integer> colors = new HashSet<>();
            int color = 0;
            for (int y = 0; y < gray.getHeight(); y++)
            {
                for (int x = 0; x < gray.getWidth(); x++)
                {
                    color = gray.getRGB(x, y);
                    System.out.println(color);
                    colors.add(color);
                }
            }

            System.out.println(colors.size() );
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

使用した画像:

画像

これを使用して、最後の出力として 24 の出力を取得します。つまり、この画像には 24 色あるはずなのに、24 色が見つかりました。

4

1 に答える 1