Hinzufügen von opencv Verarbeitung gstreamer-Anwendung

Ich versuche, Folgendes zu tun: empfangen von video-Streams unter Verwendung von gstreamer und verarbeiten es mit opencv. Ich habe einige Lösungen, und einer von Ihnen ist zu schreiben, video-in (von gstreamer) fifo und dann Lesen Sie es mit opencv. (OPTION3 hier MJPEG-streaming und-Dekodierung). Das problem ist ich kann nicht öffnen Rohr. cvCreateFileCapture einfach nie zurück. Hier ist ein Teil code, den ich schrieb:

if(mkfifo("fifo.avi", S_IRUSR| S_IWUSR) == -1)
{
    cout<<"Cant create fifo"<<endl;
    cout<<errno<<endl;
}

loop = g_main_loop_new(NULL, false);

fsink = gst_element_factory_make("filesink", "fsink");
g_object_set(G_OBJECT(fsink), "location", "fifo.avi", NULL);

playbin = gst_element_factory_make("playbin2", "play");    
g_object_set(G_OBJECT(playbin), "uri", uri.c_str(), NULL);
g_object_set(G_OBJECT(playbin), "video-sink", fsink, NULL);

bus = gst_pipeline_get_bus(GST_PIPELINE(playbin));
gst_bus_add_signal_watch(bus);

g_signal_connect(bus, "message::buffering", G_CALLBACK(&set_playbin_state), playbin);
gst_object_unref(bus);

cvNamedWindow("output", CV_WINDOW_AUTOSIZE);
capture = cvCreateFileCapture("fifo.avi");

Des Programm-stacks in der letzten Zeile.
PS: ich bin mit opencv 2.3.1.

InformationsquelleAutor Roman | 2012-05-01
Schreibe einen Kommentar