?
Ich habe das Problem jetzt lösen können!
Zuerst einmal:
Der ConnectedComp initialisiert keine Contour. Man kann ihn nutzen um herauszufinden wieviele Pixel gefüllt worden sind aber nicht für die eigentliche Lokalisierung. Die gefüllte Fläche wird sowohl direkt im Bild hinzugefügt als auch innerhalb einer Maske gespeichert. Problematisch dabei ist jedoch nur das per default die gefundenen Werte auf 1 gesetzt werden und deshalb ohne geeignete Skalierung nur ein schwarzes Bild ausgegeben wird.
Folgendes muss also getan werden:
IplImage *img_Original, *img_mask;
img_Original = cvLoadImage("....insert Path here");
CvConnectedComp comp;
img_mask = cvCreateImage(cvSize(img_Original->width+2,img_Original->height+2),IPL_DEPTH_8U,1);
cvZero(img_mask);
....
//Aufruf (x,y) = Seedpoint, floodColorRGB = Füllfarbe
cvFloodFill(img_Original,cvPoint(x,y),floodColorRGB, CV_RGB(8.0,8.0,8.0), CV_RGB(8.0,8.0,8.0), &comp, CV_FLOODFILL_FIXED_RANGE, img_mask);
cvConvertScale(img_mask,img_mask,255,0); // setzt einfach 1 auf weiß und 0 auf schwarz
cvNamedWindow("1", CV_WINDOW_AUTOSIZE );
cvShowImage("1",img_mask);
cvWaitKey(0);
Auch wenn es trivial ist, ich habe es nur durch eine kleine Anmerkung in einem OpenCV Buch herausgefunden.
Um jetzt z.B. mit mehreren Seedpoints zu arbeiten kann man z.B.
1. von seedpoint aus füllen
2. auf schwarz weiß skalieren
3. contour per cvFindContours finden und als Seq speichern
4. contour per cvDrawContours mit der Füllfarbe malen
5. altes Bild wiederherstellen und zu 1.