N9neNTR
Enthusiast
Thread Starter
- Mitglied seit
- 29.12.2010
- Beiträge
- 624
Moin,
ich komme gerade nicht weiter und hoffe, dass jemand von euch vielleicht eine zündende Idee hat
Also, ich nutze C# mit VS2010, sowie EmguCV und Aforge. Bisher läuft alles, so wie es soll, aber jetzt stecke ich an einer Sache fest, die erstmal nur eine Klinigkeit darstellt:
Ich möchte die als weiß dargestellten Pixel auf einer (gedachten) Linie in einem Bild zählen. Also nicht komplett alle weißen Pixel in dem Bild, denn das klappt mit Aforge ziemlich gut, sondern wirklich nur die Pixel auf dieser Linie.
Ok, das Bild habe ich irgendwo vorher schon in ein Grauwertbild umgewandelt und mit Imagestatistics bekomme ich schonmal meine Pixel != 0 im gesamten Bild raus und die werden in dem Array FFtestGray gespeichert. Über FFtestGray[255] komme ich dann auf alle weißen Pixel im Bild. Über iterativeThreshold war die Idee, das Bild in ein Binärbild umzuwandeln, sodass ich wirklich nur noch schwarze und weiße Pixel habe. Die gedachte Linie, aus welcher die Pixel gepeichert werden soll, ist in dem Fall die x-Achse in der Mitte des Bildes. Wird ein weißer Pixel gefunden, soll x entsprechend die Anzahl zählen und mir später ausgeben. Leider funktioniert das überhaupt nicht. Irgendwie muss die ImageStatistics ja auch die Werte im Array speichern, von daher müsste es auch möglich sein. Hatte auch schon versucht über setPixel, die anders einzufärben und dann die Farbe asuzugeben, aber das funktioniert auf Grund der Bilderformate leider nicht. Falls jemand einen Tip hat, nur her damit!
Vielen Dank schonmal für eure Hilfe
Grüße
N9ne
ich komme gerade nicht weiter und hoffe, dass jemand von euch vielleicht eine zündende Idee hat
Also, ich nutze C# mit VS2010, sowie EmguCV und Aforge. Bisher läuft alles, so wie es soll, aber jetzt stecke ich an einer Sache fest, die erstmal nur eine Klinigkeit darstellt:
Ich möchte die als weiß dargestellten Pixel auf einer (gedachten) Linie in einem Bild zählen. Also nicht komplett alle weißen Pixel in dem Bild, denn das klappt mit Aforge ziemlich gut, sondern wirklich nur die Pixel auf dieser Linie.
Code:
TestBox.Image = TestBild;
IterativeThreshold bifilter = new IterativeThreshold(2, 128);
// apply the filter
Bitmap newImage = bifilter.Apply(TestBild);
ImageStatistics statstest = new ImageStatistics(newImage);
int[] FFtestGray = stat.GrayWithoutBlack.Values;
int j = (1 / 2 * newImage.Height);
// Erster Test um die weißen Pixel auf einer Linie in dem Bild zu zählen
for (int i = 0; i < newImage.Width ; i++)
{
if (newImage.GetPixel(i, j) == Color.White)
{
x++;
}
}
Ok, das Bild habe ich irgendwo vorher schon in ein Grauwertbild umgewandelt und mit Imagestatistics bekomme ich schonmal meine Pixel != 0 im gesamten Bild raus und die werden in dem Array FFtestGray gespeichert. Über FFtestGray[255] komme ich dann auf alle weißen Pixel im Bild. Über iterativeThreshold war die Idee, das Bild in ein Binärbild umzuwandeln, sodass ich wirklich nur noch schwarze und weiße Pixel habe. Die gedachte Linie, aus welcher die Pixel gepeichert werden soll, ist in dem Fall die x-Achse in der Mitte des Bildes. Wird ein weißer Pixel gefunden, soll x entsprechend die Anzahl zählen und mir später ausgeben. Leider funktioniert das überhaupt nicht. Irgendwie muss die ImageStatistics ja auch die Werte im Array speichern, von daher müsste es auch möglich sein. Hatte auch schon versucht über setPixel, die anders einzufärben und dann die Farbe asuzugeben, aber das funktioniert auf Grund der Bilderformate leider nicht. Falls jemand einen Tip hat, nur her damit!
Vielen Dank schonmal für eure Hilfe
Grüße
N9ne