だから私はそれにある特定の色のピクセル数を見つけることができるプログラムを作ろうとしています。画像はカメラで撮影した写真で、そのあといくつかの領域がPhotoshopでマークされています。このピクセルの正確な数を見つける必要があります。しかし、私はいくつかの問題があります。 私はgetPixel(x、y)を使用していますが、私はColor.FromArgb(赤、緑、青)と比較していますが、私の最初の問題は色が少し違っています RGB 116,110,40だが、この色をPhotoshopで描画すると、一部のピクセルはRGB 115,108,38(と他の同様のもの)のような少し異なる色になり、これも含めたい。だから私は最終的にこのコード(idは今動作しているようです)を思い付いた:画像の特定の色からピクセル数を見つける方法は?
public Form1()
{
InitializeComponent();
}
Bitmap image1;
int count=0;
int red, green, blue;
int redt, greent, bluet;
double reshenie;
private void button1_Click(object sender, EventArgs e)
{
try
{
red = int.Parse(textBox1.Text);
green = int.Parse(textBox2.Text);
blue = int.Parse(textBox3.Text);
// Retrieve the image.
image1 = new Bitmap(@"C:\bg-img.jpg", true);
double widht, height, pixel ;
int x, y;
MessageBox.Show(pixel.ToString());
// Loop through the images pixels
for (x = 0; x < image1.Width; x++)
{
for (y = 0; y < image1.Height; y++)
{
Color pixelColor = image1.GetPixel(x, y);
redt = pixelColor.R;
greent = pixelColor.G;
bluet = pixelColor.B;
if ((red+10>=redt) && (red-10>=redt))//i used +-10 in attempt to resolve the problem that i have writed about the close colours
{
if ((green + 10 >= greent) && (green - 10 >= greent))
{
if ((blue + 10 >= bluet) && (blue - 10 >= bluet))
{
count += 1;
}
}
}
}
}
pictureBox1.Image = image1;
MessageBox.Show("Imashe " + count.ToString());
count = 0;
}
catch (ArgumentException)
{
MessageBox.Show("There was an error." +
"Check the path to the image file.");
}
}
問題は私が期待する結果を得るいけないということです。たとえば、1000ピクセルのようになったら、多かれ少なかれ、私のミスはどこにあるのかわかりません。だから誰かが私が間違ってやっていることを私に知らせることができれば。すべての助けを前もってありがとう。
私のブログには、指定した色の画像の各ピクセルの位置を返すサンプルが掲載されています。 http://www.jarloo.com/find-all-pixels/ – Kelly