2016-12-04 6 views
0

Ich stoße auf ein bestimmtes Problem beim Versuch, eine .yuv-Videodatei in opencv zu lesen. Mein Code ist wie folgt:YUV-Datei in opencv lesen

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/opencv.hpp> 

using namespace cv; 
using namespace std; 

int main(void) 
{ 

    VideoCapture cap("video/balloons1.yuv"); // open the video file for reading 

    if (!cap.isOpened()) // if not success, exit program 
    { 
     cout << "Cannot open the video file" << endl; 
     return -1; 
    } 

return 0; 
} 

Allerdings habe ich immer wieder die Begegnung mit dem folgenden Fehler: enter image description here

I FFMPEG nach den Anweisungen von dieser Website installiert haben: http://www.wikihow.com/Install-FFmpeg-on-Windows und die Installation scheint korrekt zu sein. Hat jemand irgendwelche Ideen, was das Problem sein könnte?

Antwort

1

Roh-YUV-Videodatei enthält keine Metadaten wie Bildabmessungen, Timing, verwendetes Pixelformat oder sogar Markierungen, um die Datei als Videodatei zu identifizieren. Kein Spieler kann diese Datei ohne zusätzliche Hilfe öffnen, weder OpenCV noch ffmpeg. Sie müssen entweder OpenCV-Parameter der Datei mitteilen (nicht sicher, ob dies mit OpenCV api möglich ist) oder die Datei in ein anderes Format konvertieren.

Ich schlage vor, Letzteres zu tun. Wahrscheinlich am einfachsten ist das in Using FFMPEG to losslessly convert YUV to another format for editing in Adobe Premier beschrieben (dies wird verlustfrei Videodatei komprimieren), oder Sie können versuchen, ein Format zu verwenden, das Rohvideo speichern kann - IIRC mxf ist fähig.

Stellen Sie sicher, dass Sie die richtigen Details für Ihre Datei angeben - die richtigen Abmessungen und das Pixelformat sind entscheidend.

+0

danke für die Aufräumung! Ich werde versuchen, einen Weg zu finden – user1816546