001
02.07.2018, 04:17 Uhr
Yadgar
|
Hi(gh)!
Den Laufzeitfehler habe ich mittlerweile korrigieren können und bin auch ein ganzes Stück weiter gekommen in der Programmierung - aber jetzt stehe ich vor einem Problem, wo ich definitiv nicht weiter weiß!
In folgendem Code:
C++: |
for (k=0; k<8; k++) { for (l=0; l<4; l++) { match = false; m = 0; c.red = c64_area[k].at(l).get_red(); c.green = c64_area[k].at(l).get_green(); c.blue = c64_area[k].at(l).get_blue(); while (match == false && m < colnum_area-4) { cout << c.red << " " << c.green << " " << c.blue << " | " << excesscolors[m].red << " " << excesscolors[m].green << " " << excesscolors[m].blue << endl; if ( c.red == excesscolors[m].red && c.green == excesscolors[m].green && c.blue == excesscolors[m].blue) match == true; m++; } cout << match << endl; if (match == true) { rgb closest = fourcolors[0]; for (n=0; n<4; n++) { if (coldist(c, fourcolors[n]) < coldist(c, closest)) closest = fourcolors[n]; } cout << a+k << endl; cout << b+l << endl; c64img[a+k].at(b+l).set_all(closest.red, closest.green, closest.blue); } } }
|
soll ein Bildbereich von 8 x 4 Pixel auf Pixel durchsucht werden, die keine der vier häufigsten Farben (die Häufigkeit der Farben wurde bereits voher ermittelt, anschließend wurden die Farben nach ihren Häufigkeiten absteigend sortiert). Falls ein solches Pixel (durch Vergleich mit einem Vector-Array vom Typ rgb (eine selbst definierte struct aus den drei Farbwerten), das die "überschüssigen" Farben enthält) gefunden wird, wird die Variable match auf true gesetzt und die Farbe des Pixels durch die im RGB-Farbraum nächstliegende der vier häufigsten Farben ersetzt.
Leider wird die Bedingung, dass die aktuelle Pixelfarbe mit einer der (in diesem Falle drei) "überschüssigen Farben" identisch ist anscheinend nie wahr - obwohl das laut Ausgabe eigentlich der Fall sein müsste (links die Werte des aktuellen Pixels, rechts die drei gesuchten Farben), trotzdem bleibt der "match"-Wert immer bei 0 (false)!
112 116 111 | 0 0 0 112 116 111 | 95 83 254 112 116 111 | 112 116 111 0 253 254 252 | 0 0 0 253 254 252 | 95 83 254 253 254 252 | 112 116 111 0 48 230 198 | 0 0 0 48 230 198 | 95 83 254 48 230 198 | 112 116 111 0 253 254 252 | 0 0 0 253 254 252 | 95 83 254 253 254 252 | 112 116 111 0 66 69 64 | 0 0 0 66 69 64 | 95 83 254 66 69 64 | 112 116 111 0 253 254 252 | 0 0 0 253 254 252 | 95 83 254 253 254 252 | 112 116 111 0 164 167 162 | 0 0 0 164 167 162 | 95 83 254 164 167 162 | 112 116 111 0 253 254 252 | 0 0 0 253 254 252 | 95 83 254 253 254 252 | 112 116 111 0 0 0 0 | 0 0 0 0 0 0 | 95 83 254 0 0 0 | 112 116 111 0 253 254 252 | 0 0 0 253 254 252 | 95 83 254 253 254 252 | 112 116 111 0 253 254 252 | 0 0 0 253 254 252 | 95 83 254 253 254 252 | 112 116 111
Was mache ich falsch?
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |