1

画像ファイルの名前をコマンドライン引数として取り、画像をグレースケールに変換し、StdDraw を使用して 256 のグレースケール強度のそれぞれの発生頻度のヒストグラムをプロットする Java クラスの作成に問題があります。

画像をグレースケールに変換する部分は完成しましたが、256 グレースケール強度の周波数をプロットするのに問題があります。これをどのように進めるか正確にはわかりません。これが私のコードです

package grayscale;



import edu.princeton.cs.introcs.Picture;
import edu.princeton.cs.introcs.StdDraw;
import java.awt.Color;


    public class Grayscale {

        public static void main(String[] args) {
            {

                Picture pic = new Picture(args[0]);
                int[] freq = new int[1000];

                for (int i = 0; i < pic.height(); i++) {
                    for (int j = 0; j < pic.width(); j++) {
                        Color color = pic.get(i, j);
                        Color gray = Luminance.toGray(color);
                        pic.set(i, j, gray);

                        Color c = pic.get(i, j);

                        int r = c.getRed();
                        int g = c.getGreen();
                        int b = c.getBlue();

                        if (r == c.getRed()) {
                            freq[r]++;
                        }
                        if (g == c.getGreen()) {
                            freq[g]++;
                        }
                        if (b == c.getBlue()) {
                            freq[b]++;
                        }


                        if (i % 1000 == 0) {
                            StdDraw.setXscale(-1, pic.width());
                            StdDraw.setYscale(0, pic.height());
                            StdDraw.setPenRadius(.5 / pic.width());
                            for (int k = 0; k < pic.width(); k++) {
                                StdDraw.line(k, 0, k, freq[k]);

                            }
                        }
                    }
                    pic.show();
                }
            }
        }
    }
4

0 に答える 0