Opencv Flood Fill Binary Optionen
Diese Frage hat bereits eine Antwort hier: Ich habe eine Kantenkarte extrahiert aus Kantenerfassungsmodul in OpenCV (canny edge detection). Was ich tun möchte, ist, die Löcher in der Randkarte zu füllen. Ich benutze C. Und OpenCV-Bibliotheken. In OpenCV gibt es eine cvFloodFill () - Funktion, und es füllt die Löcher mit einem Samen (mit einem der Ort, um Überschwemmungen beginnen). Allerdings versuche ich, alle inneren Löcher zu füllen, ohne die Samen zu kennen. (Ähnlich wie imfill () in MATLAB) Q1: wie man alle Samen findet, damit ich cvFloodFill anwenden kann () Q2: ) Äquivalent Newbie in OpenCV, und jeder Hinweis wird geschätzt. Nov 11 09 at 16:19 Amro 104k 9679 19 9679 170 9679 306 markiert als Duplikat von Shai matlab Benutzer mit dem Matlab-Abzeichen können einhändige Matlab-Fragen als Duplikate schließen und nach Bedarf wieder öffnen. Jun 5 14 at 8:52 Diese Frage wurde bereits gestellt und hat bereits eine Antwort. Wenn diese Antworten nicht vollständig auf Ihre Frage eingehen, fragen Sie bitte eine neue Frage. Entsprechend der Dokumentation von Imfill in MATLAB: Um die Lochpixel zu erhalten, rufen Sie cvFloodFill mit dem linken Eckpixel des Bildes als Samen auf. Sie erhalten die Löcher, indem Sie das im vorherigen Schritt erhaltene Bild ergänzen. MATLAB Beispiel: antwortete Nov 11 09 am 18:02 Amro 104k 9679 19 9679 170 9679 306 that39s ehrfürchtig, Amro Danke. Ndash Lily Nov 11 09 at 20:17 Sehr schön. Ich versuchte herauszufinden, wie dies zu tun, ohne sich auf die Löcher Flagge in Imfill. I39d wie dies auf OpenCV Python tun, und Sie haben mir den Weg gezeigt. Vielen Dank Amro ndash rayryeng Die cvDrawContours-Funktion hat eine Option, um die Konturen, die Sie gezeichnet haben füllen. Hier ist ein kurzes Beispiel cvDrawContours (IplImage, Konturen, Farbe, Farbe, -1, CVFILLED, 8) Hier ist die Dokumentation Ich glaube, Sie posted dies vor langer Zeit, aber ich hoffe, es hilft jemand. Dies ist der Quellcode (in C): Ich habe mich im Internet um eine richtige Imfill-Funktion (wie die in Matlab), aber die Arbeit in C mit OpenCV suchen. Nach einigen reaserches, kam ich schließlich mit einer Lösung. Der Trick befindet sich in der Parametereinstellung der Funktion cvDrawContours: cvDrawContours (dst, Kontur, weiß, weiß, 0, CVFILLED) dst Zielbild Konturzeiger auf die erste Kontur weiße Farbe zum Füllen der Kontur 0 Maximalwert für gezeichnete Konturen. Bei 0 wird nur Kontur gezeichnet CVFILLED Dicke der Linien, mit denen die Konturen gezeichnet werden. Wenn es negativ ist (zB CVFILLED), werden die Konturinnenräume gezeichnet. Weitere Informationen finden Sie in der openCV-Dokumentation. Es gibt wahrscheinlich eine Möglichkeit, dst direkt als binäres Bild zu erhalten, aber ich konnte nicht finden, wie man die cvDrawContours Funktion mit binären Werten benutzt. Beantwortet eine schnelle und schmutzige Ansatz: Führen Sie canny auf Ihre Eingabe Bild, so dass das neue binäre Bild hat 1s an den Kanten, und 0s sonst Finden Sie die erste 0 entlang einer Seite des Kantenbildes und zu initiieren Eine Flut mit 1s an diesem Punkt auf ein leeres Bild mit Ihrem Randbild als Maske. (Wollte hier hoffen, dass wir nicht unglücklich und Saatgut diese erste Füllung auf der Innenseite einer Form, die Hälfte-aus dem Bildschirm ist) Dieses neue Floodfilled Bild ist der Hintergrund. Jedes Pixel, das eine 1 hat, ist der Hintergrund, und jeder Pixel, der eine 0 hat, ist der Vordergrund. Schleife durch das Bild und finden Sie alle Vordergrund-Pixel. Samen eine Floodfill auf Sie finden. ODER dieses neue floodfilled Bild mit Ihrem Canny Bild von Schritt 1, und youre getan. Beantwortet Jan 26 10 um 18: 41OpenCV Lektionen: 4. Arbeiten mit den Kanälen, die Schwelle Verarbeitung, Flut füllen Lektionen auf Image-Analyse, OpenCV 4. Arbeiten mit den Kanälen, die Schwelle Verarbeitung, Flut füllen. Beispiel: Billiardkugeln Erkennung svi. nl wikiimg SeedAndThreshold02.png uralvision. blogspot perevalovdsgmail USU IMM Herbst 2010 Das Format des ABC 1. Funktion Name 2. Was sie tut, 3. Für das, was seine verwendet 4. Ankündigung und die Beschreibung der Parameterliste 5 Beispiel D: - Arbeitscode cpp, der das Bild liest, das die Verarbeitung durchführt und das Bild auf dem Bildschirm anzeigt oder mit der Funktion imwrite in eine Datei schreibt - Eingabebild (png oder jpg) - Das Ergebnis von (png oder jpg) Allgemein () CvtColor - Konvertieren von Farbräumen () - Funktionen für das Selbststudium inPractical Problem 1, siehe die Verteilung der Nachnamen in uralvision. Blogspot split and merge - Beschreibung Die Funktion split teilt das Mehrkanalbild in Kanäle. Funktion vereinigt Stiche zusammen ein Einzelbild Mehrkanal. Meistens werden sie separat für jede Farbbildverarbeitung sowie für verschiedene Manipulationen der Kanäle verwendet. Split und Merge - eine Liste der Optionen Ankündigung und Beschreibung der Parameterliste: void split (Konst Mat mtx, Vector mv) mtx - das Originalfarbbild mv - die Ergebnismenge ist 1-Kanal-Bild void merge (Const-Vektor mv, Mat Dst) mv - der ursprüngliche Satz von 1-Kanal-Bild dst - das resultierende Farbbild wird aufgeteilt und zusammengeführt - eine Beispielaufgabe - der eingegebene Farbbildtausch platziert den roten und blauen Kanal und berechnet das 1-Kanal-Bild, das die Helligkeit repräsentiert. (Bild, Ebenen) Teilbild in drei Kanalebenen imshow (Blau, Ebenen 0) imshow (Grün, Ebenen 1 ) imshow (rot, Flugzeuge 2) Vektor planesIzm (3) Ändert die rote und blaue Seiten: planesIzm 0 Ebenen 2 planesIzm 1 Flugzeuge 1 planesIzm 2 Ebenen 0 Mat imageIzm merge (PlanesIzm, imageIzm) imshow (Ergebnis, imageIzm) Berechnung der Helligkeit nach Auf die Formel 0.299 R 0.587 G 0.114 B (aber in Wirklichkeit ihr Recht, mit cvtColor zu tun) Mat grau 0.299 Ebenen 2 0.587 Ebenen 1 0.114 Ebenen 0 imshow (Grau, Grau) Split und Merge - ein Anwendungsbeispiel Split und Merge - mit Speicher 1. Sind Ihre Daten bei der Arbeit mit Split und Merge 2. Im obigen Beispiel - wenn Sie imageIzm ändern, werden die Dinge ändern, ob das Bild - Die Antwort auf diese Fragen ist Praktisch, objektiv 2. Per - Pixel - Anpassung Schwelle - Schwelle adaptiveThreshold - Adaptive Schwelle () min, max - min, max () abs - Absolutwert der Einnahme () Potenzexponierung () sqrt - Quadratwurzel () randu - gefüllt mit zufälligen Werten () Schwelle - Beschreibung Die Funktion thresholdperformt die Schwellwertverarbeitung des Bildes. Meistens wird es verwendet, um Objekte von Interesse Pixel in das Bild zu markieren. Src........................................................... Erlaubt, gleich dst src zu sein. dreschen - Schwellen MAXVAL - Der neue Höchstwert (für THRESHBINARY, THRESHBINARYINV) thresholdtype - Art der Funktion der Schwellenverarbeitung: THRESHBINARY THRESHBINARYINV THRESHTRUNC THRESHTOZERO THRESHTOZEROINV THRESHOTSU (- gibt es automatisch einen Schwellenwert, und der Rückgabewert) Schwelle - eine Liste von Optionen thresholdtype - Typ Schwellwertfunktion: THRESHBINARY THRESHBINARYINV THRESHTRUNC THRESHTOZERO THRESHTOZEROINV THRESHOTSU (- gibt es eine Schwelle automatisch, und der Rückgabewert) Schwelle - ein Beispiel für die Anwendung Problem - das Bild von Billard-Feld, um die Pixel hervorheben, die nicht Feld (Aufnahmebedingungen sind (Bild, Ebenen) Mattenebene 0,299 Ebenen 2 0,587 Ebenen 1 0,114 Ebenen 0 Doppelte Schwelle 50,0 Die Schwelle ist empirisch Schwelle (grau, grau, 50.0, 255.0, CVTHRESHBINARY) imshow (Schwelle, grau) Schwelle - ein Anwendungsbeispiel gewählt Bitte beachten Sie: Wir haben nur Pixel nicht Feld identifiziert. Um die Koordinaten der Zentren von Kugeln und Cue-Position zu finden, ist eine weitere Bearbeitung erforderlich. Arbeiten mit Regions Arbeiten mit Regions floodFill - Zuweisung von verbundenen Regionen morphologische Operationen dilate - dilation () erode - Erosion () floodFill - Beschreibung Funktion floodFill stellt einen Füllbereich, ausgehend von einem Pixel (x, y), mit festgelegten Grenzen Shutdown mit einem 4 - oder 8 - Nachbarschaftspixeln. Wichtig: es verwöhnt das Originalbild - wie es füllt. 1. Am häufigsten wird es verwendet, um Bereiche hervorzuheben, die durch die Schwellenwertverarbeitung identifiziert wurden, für die anschließende Analyse. 2. Es kann auch verwendet werden, um kleine Rauschen auf dem binären Bild zu entfernen (im Gegensatz zu der Erosionsdilatation - nicht verderben die Grenzen der größeren Flächen). 3.If erhöhen Gesamtkasten, der im Bereich von 1 Pixel auf allen Seiten gefunden wird und die Füllung bilden, die Weise, die Sie das interne Loch im Bereich beseitigen können. FloodFill - eine Liste der Optionen Ankündigung und Beschreibung der Parameterliste: int floodFill (Mat-Bild, Punktseed, Skalar newVal, Rect rect 0 Skalar loDiff Skalar (), Skalar upDiff Skalar (), int Flags 4) image - Das Eingabebild , 1 - oder 3-Kanal, 8 oder 32-Bit. Seid - Pixel, von dem aus direkt anfangen soll - Bounding Box, gefunden durch das Feld loDiff, UpDiff - erlaubter Unterschied zu seinen Nachbarn (Or - mit embryonischem Pixel, wenn Flags FLOODFILLFIXEDRANGE), dh ein neues Pixel muss den WertNew value - loDiff erfüllen
Comments
Post a Comment