任務のために助けが必要です。基本的に、これは私がやりたいことです:
- イメージを
PictureBox
- 255(最大値)と各画素のR値の差、255とG値の差、B値も計算
- 上記の計算から、最小の絶対値は、ピクセルの色がその色に近いことを示します (例: (255-R 値) は最小の絶対値を持つため、ピクセルはその色に近くなります)。
- ピクセルの色を近い色に変更します (上の例では、赤に変更することを意味します)。
- 出力ピクチャボックスに結果を表示します
その結果、その三原色の画像が得られます。
私は次のようなコードを書きました:
Bitmap img = new Bitmap(InputPictureBox.Image);
byte R, G, B;
Color pixelColor;
for (int x = 0; x < img.Width; x++)
{
for (int y = 0; y < img.Height; y++)
{
pixelColor = img.GetPixel(x, y);
R = (byte) Math.Abs(pixelColor.R - 255);
G = (byte) Math.Abs(pixelColor.G - 255);
B = (byte) Math.Abs(pixelColor.B - 255);
if (R < G && R < B)
{
pixelColor = Color.Red;
}
else if (G < R && G < B)
{
pixelColor = Color.Green;
}
else if (B < R && B < G)
{
pixelColor = Color.Blue;
}
}
}
OutputPictureBox.Image = img;
問題は、カラー画像が反転することです。では、私のコードの何が問題なのですか? ステートメントが機能しないと思いますが、そのif
理由はわかりません。私が間違っている?
上記の私のコードに関連するもう1つの質問は、R / G / B値のギャップをそのように計算するだけで実際に機能しますか、それともユークリッド距離を使用して絶対に行う必要がありますか?
よろしければ、これを修正する方法、またはコードの書き方を教えてください。よく似た質問を読んだことがありますが、与えられた答えはまだ手がかりを与えてくれませんでした。