Ich versuche, das createsamples
-Beispiel von der OpenCV-Bibliothek auszuführen. Ich kann in einem Bild auf einmal laden und es scheint gut zu funktionieren. Wenn ich jedoch versuche, eine Sammlung von Bildern zu laden, erhalte ich einen Parse-Fehler. Ich bin mir nicht sicher, ob etwas in meiner Sammlungsdatei ungültig ist oder etwas fehlt. Unten ist das genaue Format meines Textdokuments.
Textdokumentdetails:
%Vor%Befehlszeilenaufruf:
%Vor%Jede Hilfe wird sehr geschätzt.
Der Parse-Fehler ist darauf zurückzuführen, dass wenn Sie die Anzahl der zu generierenden Pos-Image-Samples nicht angeben, die Erstellungssamples den Standardwert 1000 verwenden. Wenn Ihr Annotation-Textdokument jedoch weniger als 1000 Bounding Boxes von Objekten enthält, Sie erhalten den Parse-Fehler. Sie können die .vec-Datei weiterhin für die Trainingskaskade verwenden. Das einzige Problem ist, dass die Information der Nummer falsch ist. Es gibt zwei Möglichkeiten, es zu beheben.
Sie zählen die Anzahl der Objektbegrenzungsfelder im Textdokument manuell. Und geben Sie den Wert kleiner oder gleich der Zahl für die Option "-num" an z.B. Beispiele erstellen -info xxxxx.txt -vec pos.vec -num [Wert]
Sie können das OPENCV_ROOT_DIR / modules / haartraining / createsamples.cpp überarbeiten. Wenn die -num nicht angegeben ist, legen Sie die Anzahl der Pos-Samples als Anzahl der Objektbegrenzungsfelder im Textdokument fest
Codeausschnitt: In createsamples.cpp int num = 0;
In cvsamples.cpp
%Vor% Ich habe Probleme damit, opencv_createsamples
auf meiner Windows-Maschine zu verwenden, und es hat einfach funktioniert. Ich dachte, ich würde die Details posten, um jemand anderem zu helfen. Ich verwende opencv 2.4.8 on Windows 7
.
Zunächst musste ich die Datei opencv_createsamples.exe
in dem Verzeichnis verwenden, das in meiner Pfadvariablen als OPENCV_DIR
aufgeführt ist. Ich konnte die Datei exe
nicht an einen anderen Ort kopieren.
Ich habe ein Unterverzeichnis text_classifier
in diesem Verzeichnis für meine Bilder und meine Textdateien eingerichtet. Ich habe diesen Befehl in der Befehlszeile verwendet:
F: \ Apps \ opencv \ build \ x64 \ vc10 \ bin & gt; öffnencv_createsamples.exe -vec text_classifier \ text_binary_desc -info text_classifier \ positive_examples.txt -num 146 -w 1350 -h 900 -bg text_classifier \ negative_samples.txt
Beachten Sie, dass ich die Anzahl der ausgewählten Bereiche in den Bildern auflisten musste (-num 146). Ich habe auch die Breite und Höhe der positiven Proben aufgeführt.
Innerhalb der Datei positive_examples.txt musste ich die Dateien so aufgelistet haben:
text_positives_clean \ 1839_Boettiger_001.JPG 1 708 35 471 793
Mit anderen Worten, die Dateien mussten relativ zur Datei positive_examples.txt und nicht relativ zur exe-Datei (opencv_createsamples.exe) aufgelistet werden. Als ich versuchte, die Dateien relativ zur exe aufzulisten, wie zum Beispiel:
text_classifier \ text_positives_clean \ 1839_Boettiger_001.JPG 1 708 35 471 793
Dann habe ich den Fehler: Image kann nicht geöffnet werden: text_classifier \ text_classifier \ text_positives_clean \ 1839_Boettiger_001.JPG
Dann bemerkte ich, dass mein spezielles automatisiertes System zum Erstellen dieser Datei es irgendwie verpasst hatte, einige Dateien in das Verzeichnis zu laden, also gab es Dateien in der Datei positive_examples.txt, die nicht im Verzeichnis waren. Die exe ist einfach umgefallen, wenn sie etwas gefunden hat, das in der Datei positive_examples.txt aufgeführt ist, die nicht im Verzeichnis war. Ich habe die Lücken im Bildverzeichnis gefüllt.
Dann habe ich einen seltsamen Fehler: Kann Bild nicht öffnen: 129
Ich entdeckte, dass ich diesen Fehler gemacht hatte:
text_positives_clean \ 1862_Streckfuss_0006.JPG 1 813 502 382 353 129 46 526 798 682 780 117 67
Stellen Sie fest, dass die Anzahl der ausgewählten Bereiche hier 1 ist (die Nummer, die gerade auf 'JPG' folgt), während die Anzahl der ausgewählten Bereiche wirklich 3 ist? So versuchte opencv_createsamples.exe, das nächste Ding zu öffnen, das es als ein Bild fand, d. H. 129, nachdem er den einzelnen ausgewählten Bereich bekommen hatte. Und es fiel wieder um.
Also habe ich die 1 in eine 3 geändert. Dann habe ich einen Parse-Fehler bekommen, der mir tatsächlich eine Zeilennummer in meiner Positiv-Examples.txt-Datei gegeben hat. Ich ging zu dieser Zeile und stellte fest, dass einer meiner Einträge kein Leerzeichen zwischen den ausgewählten Bereichen enthielt, z. B.
949 315 157 67131 30 513 806
Ich habe das behoben und den Raum hinzugefügt, und schließlich hat die exe alle meine 146 Samples gemacht. Yoohoo!
Hoffe, das hilft jemandem. : -)
Einer der Gründe könnte an der Info-Datei liegen.
/ home / mine / gesicht detektor image / positive / * .jpg
Stellen Sie sicher, dass der Name des Ordners keinen Platz in seinem Namen hat. wie oben gezeigt "Gesicht Detektor Bild", sollte dies ein anderer Name wie "Bilder" oder etwas ohne Platz drin sein.
Benennen Sie den Ordner sowohl in seinem ursprünglichen Pfad als auch in der .info-Datei um.
Prost !!
Tags und Links opencv