2016-07-19 7 views
0

Ich versuche, eine Anwendung zu erstellen, die Daten von der Webcam oder einem externen Gerät erhalten, Video Frames in Textdatei speichern und dann Frames aus erstellten Textdatei lesen.OpenCV Erstellen von Video aus Textdatei

Ich weiß nicht, ob es eine gute Idee ist, in Textdatei zu speichern, ich bin offen Vorschläge.

Bis jetzt habe ich das Speichern in eine Textdatei getan.

Mein Problem liest aus der Textdatei. Grundsätzlich lese ich Zeile für Zeile, weiß aber nicht, wie ich diesen Text in ein Mat-Objekt umwandeln soll.

Bisher ist mein Code:

ifstream read_storage(new_vid_frm_path); 
if(!read_storage.is_open()) { 
    perror("\n\n\n\t\t\t(-)FAIL : Can't Open SavedVideoFrames.txt\n\n\n\t\t\t"); 
    return -1; 
} 

VideoWriter *vid = new VideoWriter(new_vid_frm_path,CV_FOURCC('P', 'I', 'M', '1'),30,Size(vc.get(CV_CAP_PROP_FRAME_WIDTH),vc.get(CV_CAP_PROP_FRAME_HEIGHT))); 
Mat line; 
vector<Mat> vid_frms; 
while (getline (read_storage,line)) { 
    cout << line << '\n'; 

} 

read_storage.close(); 

if(vid_frms.size() == 0){ 
    printf("\n\n\n\t\t\t(-)FAIL: Error In Frame\n\n\n\t\t\t"); 
    return -1; 
} 

for(size_t i = 0; i<vid_frms.size(); i++) 
    (*vid).write(vid_frms[i]); 

printf("\n\n\n\t\t\t(+)SUCCESS: Video Processing Complete \n\n\n\t\t\t "); 

Haben Sie ay Vorschläge haben, wie kann ich diese Zeile Zeichenfolge gegossen oder konvertieren Mat obejct?

while (getline (read_storage,line)) { 
    cout << line << '\n'; 

} 

Danke.

Übrigens habe ich diese Lösung betrachtet, aber ich konnte es nicht verstehen. Convert a string of bytes to cv::mat

Ich konnte den Byte-Typ in C++ nicht finden und ich denke, es könnte eine direkte Umwandlung zwischen String zu Mat-Objekt sein.

Antwort

2

Sie können alles (nur) in OpenCV in eine .xml oder .yml Textdatei speichern und dann mit den Methoden OpenCV XML/YAML FileStorage einlesen.

Ich empfehle das über native C++ - Methoden für Datei-Sachen.

Es ist speziell entwickelt, um all diese Kleinarbeit für Sie zu erledigen.

+0

Statt in den Text zu speichern, XML/YAML-Datei, Wie wäre es mit Speichern als Bild. Png-Format? Dann kann es später als Videoeingangsrahmen verarbeitet werden. Wenn Sie jedoch versuchen, während der Laufzeit ein Video zu erstellen, wird der gesamte Prozess verlangsamt. –

+0

Ich stimme @Ahmet Tavli zu und tatsächlich ist es viel schneller, Dinge nicht auf diese Weise zu speichern, aber im Geiste der Frage selbst, wenn es einen guten Grund gibt, warum du den Text brauchst, gibt es keinen Grund, nicht zu verwenden die verfügbaren Werkzeuge. –