Seite 1 von 1
Pixel in einer Zeile rausfinden(QIMAGE)
Verfasst: 16. April 2007 13:21
von PeterPan200
Hallo Leute!
Ich habe ein kleines Problem und komme irgendwie nicht weiter! Ich möchte ganz gerne nur die grünen Pixel in der jeweiligen Zeile rausfinden. Die gesamtzeilen habe ich:
Code: Alles auswählen
QImage base;
for ( int y=0; y<base.height(); y++ )
{
for ( int x=0; x<base.width(); x++ )
{
.
.
.
}
}
m_gesamtZeilen = y * x;
Mein Ansatz war, eine for Schleife zu erstellen:
Code: Alles auswählen
for (int count=0; count < m_gesamtZeilen; count++)
{
// ?????????????????????
}
Ist mein Ansatz richtig?? Wenn ja, wir selektiere ich denn die Pixel pro Zeile aus??
Vielen Dank!
Verfasst: 16. April 2007 13:37
von Christian81
Re: Pixel in einer Zeile rausfinden(QIMAGE)
Verfasst: 16. April 2007 14:27
von der_andreas
PeterPan200 hat geschrieben:
Code: Alles auswählen
QImage base;
for ( int y=0; y<base.height(); y++ )
{
for ( int x=0; x<base.width(); x++ )
{
.
und wenn Du genau hier, wo Du sowieso über sämtliche Punkte iterierst, die entspr. Abfrage machst.. so wie christian81 das angeregt hat.
QImage::pixel ( int x, int y ) gibt Dir einen RGB-Wert zurück, den Du nur noch daraufhin überprüfen mußt, ob G > Schwellenwert und R+B < Schwellenwert2 ist.
Evtl. noch x und y in einem Point-Array merken zur späteren Auswertung.
z.B.:
Code: Alles auswählen
if (((qGreen(QImage::pixel ( x, y )) > 250) /* Schwellwert für Grün */
&&(qRed(QImage::pixel ( x, y )) < 50) /* Schwellwert für Rot */
&&(qBlue(QImage::pixel ( x, y )) < 50) /* Schwellwert für Blau */
)
{
points[i].x=x; // i ist irgenwo vorher genullt
points[i].y=y;// points ist ein QArray von QPoints
i++;
}
oder so ähnlich, hab die syntax jetzt nicht genau im Kopf.
PeterPan200 hat geschrieben:
Mein Ansatz war, eine for Schleife zu erstellen:
Code: Alles auswählen
for (int count=0; count < m_gesamtZeilen; count++)
{
// ?????????????????????
}
Ist mein Ansatz richtig?? Wenn ja, wir selektiere ich denn die Pixel pro Zeile aus??
Vielen Dank!
Wie erwähnt, ist die zweite Schleife eher sinnfrei, da Du dort nur noch über die Gesamtzahl der Pixel iterierst und x und y wieder herausrechnen müsstest, um das konkrete Pixel abzufragen. (Auch ne Möglichkeit seinen 4Ghz Quadcore zu beschäftigen). Was Du machen kannst, ist über das weiter oben erzeugte Punktarray zu laufen und alle dort hinterlegten Punkte blasslia setzen, oder was auch immer.
HTH
Verfasst: 16. April 2007 15:01
von PeterPan200
Hallo der_Andreas!!
Sorry, aber dein Vorschlag blicke ich leider nicht durch! QImage::pixel(x,y) verwende ich schon vorher. Ich muss noch eins korrigieren, die gesamtzahl der Zeilen ist nicht x*y, sonern nur y!
Ich habs folgendermaßen versucht:
Code: Alles auswählen
for (count=0; count < m_gesamtZeilen; count++)
{
for (int t=0; t<x; x--)
{
pixel = base.pixel(x, count);
green = qGreen(pixel);
cout <<"Zeile: "<<count <<"Pixel:" <<green<<endl;
}
}
Leider gibt er mir nur die Werte der Nullten Zeile aus und geht nicht weiter!

Verfasst: 16. April 2007 15:09
von Christian81
Manchmal frage ich mich wie es um die C-Grundlagen einiger hier im Forum bestellt ist...
Code: Alles auswählen
QImage img;
for(int y = 0; y < img.height(); y++) {
int iGreen = 0;
for(int x = 0; x < img.widfth(); x++) {
pixel = img.pixel(x,y);
// jetzt überprüfen auf was immer Du willst
if(bGreen)
iGreen++;
}
qDebug("Anzahl grüner Pixel in Zeile %d: %d", y, iGreen);
}
Verfasst: 16. April 2007 17:22
von der_andreas
Christian81 hat geschrieben:Manchmal frage ich mich wie es um die C-Grundlagen einiger hier im Forum bestellt ist...
Ich bitte in aller Form um Abbitte, für das nur skizzenhafte, syntaktisch föllig valsche Beispiel. Bei meinen weiteren Postings werde ich auf mehr Korrektheit achten.
Verfasst: 16. April 2007 18:23
von PeterPan200
@ der_andreas!
Wenigstens antwotest du ganz normal und brings keine blöden Sprüche wie der Moderator Christian81!
Danke für deine Hilfe!

Verfasst: 16. April 2007 19:33
von Christian81
Das sind keine blöden Sprüche sondern berechtigte Fragen - der_Andreas hatte alles korrekt erklärt, aber die Umsetzung war (leider) mangelhaft

Ich erwarte nunmal gewisse Grundkenntnisse *bevor* man mit Qt anfängt, sorry.
Verfasst: 16. April 2007 20:11
von der_andreas
@PeterPan200
PeterPan200 hat geschrieben:@ der_andreas!
Wenigstens antwotest du ganz normal und brings keine blöden Sprüche wie der Moderator Christian81!
Danke für deine Hilfe!

Gemach, gemach.
Also der Christian81 hat schon ne Grundlage für seine, meiner Meinung nach berechtigte, Aussage. Wenn Du Dich hier im Forum mal ein wenig umschaust, wirst Du anhand seiner Beiträge, seine Kompetenz sicher selbst beurteilen können. Außerdem hat er noch ein konkretes Beispiel geliefert, das Deine ursprüngliche Frage auch beantwortet. Evtl. überdenkst Du Deine Haltung noch einmal.
Desweiteren ist das von mir gelieferte Beispiel, so nicht lauffähig und setzt tatsächlich Grundkenntnisse der Programmierung/Kodierung voraus, sowie daß Du in der Doku nachschaust, wie das konkret implementiert wird.
Die Aufgabe ist eigentlich trivial.
Gruß
da