VIGRA - help
-
ich brauche nochmals hilfe

**
folgendes versuche ich zu erstellen:**
ich habe ein image mit schwarzen hintergrund auf dem sich bunte rechtecke befinden.
die bunten rechtecke möchte ich als eigene files speichern.ich suche das eingangsimage also zeile für zeile und spalte für spalte nach einem bunten pixel ab und solange die pixelfarbe die gleiche ist schreibe ich sie in das neue bild, bis das rechteck fertig ist...
meine überlegungen:
da ich noch keine erfahrung mit bv-lib oder templates besitze, habe ich die header datein monoton nach einem hinweis durchsucht.
bei der function RGBValue()bin ich dann hoffentlich fündig geworden.meine frage:
wie lese/vergleiche ich den pixelfarbwert der ungleich schwarz sein soll ?
-
ich bin der lösung auf der spur...

jedoch hänge ich grad daran fest, wie ich einen farb-bereich extrahieren kann...
-
Womit erstellst und liest du das alles aus?
Ansonsten:
Vlt einfach mal
color=GetPixel(x,y);und anschließend
if(color!=black)und black definierst du vorher z.B. einfach mit nem
RGB(0,0,0)
-
@tim82: Ok, Du hast also ein Bild eingelesen. Vermutlich so in etwa:
vigra::ImageImportInfo info(argv[1]); vigra::BRGBImage in(info.width(), info.height()); importImage(info, destImage(in));...dann generierst Du Dir mal nen schwarzen Pixel:
vigra::RGBValue<vigra::UInt8> black;und jetzt holst Du Dir die Farbe eines Pixels des Bildes:
vigra::RGBValue<vigra::UInt8> color = in(50,50);...und jetzt vergleichst Du:
std::cout << (black == color) << std::endl;Wolltest Du das haben?
-
hi,
habe mt hilfe der examples folgendes erstellt.
hier werden alle weissen und schwarzen pixel entfernt.
ich hatte es mir so gedacht, dass ich nicht nur einzelne farben entfernen/suchen kann. sondern ganze farbbereiche deren lokalität ich nicht kenne.
es würde mich schon reichen wenn mir alle zeilen/spalten ausgegeben werden die zb pixel aus dem blauen(roten oder gelben) rgb farbbereich beinhaltenvigra::ImageImportInfo info(argv[1]); vigra::BRGBImage in(info.width(), info.height()); vigra::BRGBImage out(info.width(), info.height()); importImage(info, destImage(in)); // vigra::RGBValue<int> offset(255, 255, 255); vigra::RGBValue<int> weiss(255, 255, 255); vigra::RGBValue<int> schwarz(0, 0, 0); // create image iterator that points to upper left corner // of source image vigra::BRGBImage::Iterator sy = in.upperLeft(); // create image iterator that points past the lower right corner of // source image (similarly to the past-the-end iterator in the STL) vigra::BRGBImage::Iterator send = in.lowerRight(); // create image iterator that points to upper left corner // of destination image vigra::BRGBImage::Iterator dy = out.upperLeft(); // iterate down the first column of the images for(; sy.y != send.y; ++sy.y, ++dy.y) { // create image iterator that points to the first // pixel of the current row of the source image vigra::BRGBImage::Iterator sx = sy; // create image iterator that points to the first // pixel of the current row of the destination image vigra::BRGBImage::Iterator dx = dy; // iterate across current row for(; sx.x != send.x; ++sx.x, ++dx.x) { // calculate negative color if((weiss != *sx) && (schwarz != *sx)) { *dx = *sx;} } } exportImage(srcImageRange(out), vigra::ImageExportInfo(argv[2])); } }ist es nicht einacher farbbereiche in hsv bildern zu finden

-
tim82 schrieb:
ist es nicht einacher farbbereiche in hsv bildern zu finden

Mir ist noch nicht ganz klar, was Du eigentlich erreichen möchtest. Was willst Du am Schluss "in der Hand haben"? Willst Du das Bild segmentieren? Dafür bietet die Vigra ja AFAIK etwas an.
-
Gregor schrieb:
tim82 schrieb:
ist es nicht einacher farbbereiche in hsv bildern zu finden

Mir ist noch nicht ganz klar, was Du eigentlich erreichen möchtest. Was willst Du am Schluss "in der Hand haben"? Willst Du das Bild segmentieren? Dafür bietet die Vigra ja AFAIK etwas an.
ja, im prinzip will ich es segmentieren.
ich habe dazu mal ein paar fotos hochgeladen:
input
output1
output2was ich "segmentieren" möchte sind (alle zeilen) eine gewisse anzahl an pixeln eines farbbereiches (hier auf den fotos: blau oder rot)
es scheitert bei mir daran, dass ich nicht weiss wie ich einen farbbereich angebe.