Fehler "Train-Dataset für Temp-Phase kann nicht gefüllt werden." bei Verwendung des Traincascade-Tools von OpenCV

7

Ich baue das opencv_traincascade.exe-Tool aus dem Quellcode (OpenCV 2.4.0) mit vs2010 unter Windows 7. Ich möchte einen LBP-Klassifikator trainieren, also verwende ich opencv_traincascade.exe mit den folgenden Argumenten

  

-Daten D: \ OpenCV \ Klassifizierer \ lbpclassifier1 \ temp \ data -vec D: \ OpenCV \ Klassifizierer \ lbpclassifier1 \ temp \ samples.vec -bg   D: \ OpenCV \ Klassifizierer \ lbpclassifier1 \ temp \ negative \ infofile.txt   -numPos 40 -numNeg 40 -precalcIdxBufSize 500 -precalcValBufSize 500 -StageType BOOST -FunktionTyp LBP -w 24 -h 24

Die Fehlermeldung, die ich bekomme, ist:

%Vor%

Diese Frage wurde zuvor gestellt: Fehler bei der Verwendung der opencv_train-Kaskade und die dort vorgeschlagene Lösung. wenn die Anzahl der positiven und negativen Proben gleich ist, hilft das in diesem Fall nicht.

Ich dachte, dass der Fehler mit diesem Fehler zusammenhängen könnte: Ссылка Also habe ich die neueste Version von imagestorage.cpp von dieser Seite heruntergeladen und das opencv_traincascades-Tool neu erstellt. Außerdem ist die Gesamtanzahl der Samples in der .vec-Datei 45. Wie in diesem Kommentar vorgeschlagen, habe ich habe das numPos-Argument auf 2 gesetzt, damit mir die Samples in der .vec-Datei nicht ausgehen. Die Anzahl der Beispiele in der .vec-Datei beträgt 45.

Jede Hilfe wird sehr geschätzt. Danke.

    
Shishir Joshi 10.07.2012, 11:47
quelle

5 Antworten

3

Ich hoffe, diese Frage zu beenden. Für diejenigen, die auch darüber gestolpert sind. Ich weiß es alt. Ich habe die Bahn getestet und festgestellt, dass irgendwann die folgende Zeile:

%Vor%

gibt eine Null-Matte zurück. Diese Zeile sollte die Hintergrundbilder lesen.

Dieser Fehler tritt auf, wenn Sie traincasade.cpp als debug erstellen und die Release-Bibliotheken und -Dlls von opencv verwenden. (Andersherum sollte nicht so gut funktionieren.

    
xeed 04.06.2013, 11:25
quelle
7

Ich lerne auch, wie man OpenCV Objekterkennungswerkzeuge benutzt.

Ich habe bemerkt, dass opencv_traincascade einen Fehler erzeugt, wenn die bg-Datei (in Ihrem Fall "D: \ OpenCV \ Classifiers \ lbpclassifier1 \ temp \ negative \ infofile.txt") ein falsches Format hat oder einen Eintrag mit nicht existierender Datei enthält .

Ich hoffe, es hilft.

    
Hiro 30.08.2012 03:01
quelle
7

Erstens, auch für mich war der Fehler mit der BG-Datei. Ich benutze Opencv 2.4.10.1.

Ich habe den Fehler erhalten, als ich den absoluten Pfad zur bg Datei im Befehl angegeben habe (wie der Autor des Beitrags). Sieht so aus, als ob die Autoren einen wirklich, wirklich beschissenen Job gemacht haben, um die ganzen negativen Bildpfade herauszufinden. Eine einfache Problemumgehung besteht darin, einfach CD in das Verzeichnis der .info-Datei zu kopieren (beachten Sie -bg infofile.txt )

%Vor%     
etoropov 28.03.2015 19:05
quelle
3

Ich hatte dieses ähnliche Problem, das einen Fehler ergibt:

%Vor%

Das Problem war, dass meine bg.txt in einem Windows-System mit \ r für die nächste Zeile generiert wurde. Als ich versuchte, opencv_traincascade in Ubuntu zu verwenden, las es '\ r' in den String für Dateiliste, also in CvCascadeImageReader::NegReader::nextImg() , die Zeile src = imread(imgFilenames[last++], 0); (wie erwähnt) funktionierte nicht.

Mein Fix bestand darin, str.erase(std::remove(str.begin(), str.end(), '\r'), str.end()); vor imgFilenames.push_back(dirname + str); in imagestorage.cpp

hinzuzufügen

Ich hoffe, das hilft, wenn noch jemand kämpft.

    
ChiNhan 16.01.2015 14:28
quelle
1

Ich hatte genau das gleiche Problem. Das Problem für mich war, dass ich meine negative.txt-Datei mit PowerShell erstellt habe, die eine Stückliste in die Datei schreibt. Die BOM löst das Programm opencv_traincascade aus, wenn sie versucht, die Datei zu lesen und keine Bilder gefunden werden kann. Ich habe die Datei mit Notepad ++ in UTF-8 konvertiert und dadurch das Problem behoben.

    
Lucifer Sam 11.01.2016 05:33
quelle

Tags und Links