OpenCV Beispiele erstellen

8

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.

    
Seb 01.07.2011, 14:08
quelle

4 Antworten

7

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.

  1. 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]

  2. 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%     
Yiqun Hu 09.02.2012, 16:20
quelle
3

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. : -)

    
excyberlabber 04.04.2014 08:27
quelle
0

Target1.JPG - es muss ein relativer Pfad zu createsamples.exe sein. Nicht zu Target.txt.

Ich habe es auf meiner Maschine getestet und habe solche Ergebnisse erhalten:

%Vor%     
red1ynx 01.07.2011 15:01
quelle
0

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 !!

    
adeel waris 24.07.2013 11:43
quelle

Tags und Links