Freitag, Februar 21, 2020

Wie das Lesen von Dateien in der Reihenfolge von einem Verzeichnis in OpenCV?

Ich bin neu OpenCV. Ich möchte Lesen von XML-Dateien in einem Verzeichnis. Ich bin mit FindFirstFile, aber ich bin nicht immer, wie bekomme ich die Datei-Namen zu geben, die als input für cvLoad weiter. Hier ist der code, den ich verwende:

HANDLE hFind;
WIN32_FIND_DATA FindFileData;
wchar_t* file = L"D:\\zainb_s\\M.phil\\thesis\\dataset\\dataset_3\\RGB_3\\RGB\\s01_e01-   Copy\\1_walking\\depth\\*.xml";
hFind = FindFirstFile(file, &FindFileData);
cout << FindFileData.cFileName[0];
FindClose(hFind);

Ich möchte die Dateinamen in ein array Lesen von Dateien weiter zu verarbeiten.

  • Also Ihre Frage ist, über die Erkennung der Dateien in einem Ordner? Sie können verwenden Sie eine zusätzliche Bibliothek wie Qt oder boost?
  • ja genau. ich möchte Zugriff auf die Dateien im Ordner zugreifen möchten, deren Namen man von einem Laden für die weitere Verarbeitung. Wie werde ich diese Bibliotheken? als ich Hilfe ich bin ganz neu Opencv und C
InformationsquelleAutor Zainb | 2014-10-23

1 Kommentar

  1. 13

    Wenn Sie eine aktuelle version von OpenCV, du bist besser dran, die Vermeidung von OS-spezifische Methoden:

    vector<string> fn; //std::string in opencv2.4, but cv::String in 3.0
    string path = "e:/code/vlc/faces2/*.png";
    cv::glob(path,fn,false);
    //Now you got a list of filenames in fn.

    (Ohh, und wieder vermeiden veraltet C-API-Funktionen wie cvLoad wie die Hölle, bitte!!!!)

    • wow. Es funktioniert sehr gut. ich danke Ihnen so sehr, Sie ist mein problem gelöst so schnell.
    • Toll, wusste nicht, glob noch!
    • cvLoad ist die Lösung, die ich für mein dataset und es ist in Ordnung, nach viel versucht. Ich brauche dies für meine Daten. Können Sie mir bitte helfen für eine Sache? Dieser code ist in Ordnung, aber es muss Ihnen bekannt sein, dass cvLoad erwartet ein const char *, aber dieser code gibt string. können Sie bitte helfen Sie mir was soll ich tun dafür? Ich danke Ihnen sehr. Ich bin sehr zuversichtlich, dass mein problem hier gelöst werden.
    • jede Zeichenfolge hat ein c_str (); – Mitglied, das gibt einen const char*.
    • hey @berak ist es, für mich zu arbeiten. danke. Kannst du mich führen auf eine Sache. wenn ich IplImage* Tiefe=(IplImage*)cvLoad(„depthImg190.xml“); es ist in Ordnung. aber wenn ich IplImage* Tiefe=(IplImage*)cvLoad(filename); filename = „D:\\zainb_s\\M.phil\\thesis\\dataset\\dataset_3\\RGB_3\\RGB\\s01_e01-Copy\\1_walking\\depth\\depthImg190.xml“ cvLoad ist nicht so dass mir gute Ergebnisse. Es ist nicht das Lesen parameter in Ordnung. Können Sie mir den guide mal hier und der Grund für dieses Verhalten?
    • Ich habe erteilt „depthImg190.xml“ im Projekt-Ordner für den test, aber ich benötigen, Lesen Sie alle Dateien des Ordners. Was soll ich tun?
    • ich kann dir nicht helfen, mit IplImages. sollten Sie nicht verwenden, dass veraltetes Zeug sowieso, aber Lesen die xml-Dateien mittels cv::FileStorage, und verwenden Sie cv::Mat anstelle des IplImages. ich weiß, es ist schwer zu schlucken für noobs, dass Sie haben zu werfen Ihre hart gearbeitet-für wissen, aber du bist eindeutig auf dem falschen Weg gibt.
    • Ich hatte tatsächlich versucht FileStorage ersten und cv::Mat, aber das problem, das ich konfrontiert war, war meine xml-Dateien enthalten type_id „opencv-Bild“ anstelle von „opencv-matrix“ und FileStorage war nicht die Rückgabe der Daten-matrix. Gibt es irgendeine Lösung dafür?
    • Hier ist die Frage, die ich gepostet hatte, zuerst mit FIleStorage Problem stackoverflow.com/questions/26421473/…

Kostenlose Online-Tests