2014-05-09 13 views
8

Używam płyty Nitrogen6x z kamerą ov5640 (mipi).Używanie kamery niestandardowej w OpenCV (przez GStreamer)

Aparat nie używa standardu v4l/v4l, ale możemy strumienia wideo za pomocą GStreamer dla jego kierowcy (mfw_v4l):

gst-launch mfw_v4lsrc ! autovideosink 

chcę używać aparatu w OpenCV nazywając go poprzez GStreamer (GStreamera wewnątrz OpenCV). Zadałem pytanie dotyczące połączenia się z GStreamerem wewnątrz OpenCV here, i to jest kontynuacja.

Jeśli włączę obsługę GStreamer, to jest zaznaczone in the source code, ale OpenCV próbuje użyć standardowego V4L/V4L2 dla GStreamer, który chcę zmienić. Odcinek o wywołanie GStreamer jest w cap_gstreamer.cpp:

CvCapture* cvCreateCapture_GStreamer(int type, const char* filename) 
{ 
    CvCapture_GStreamer* capture = new CvCapture_GStreamer; 

    if(capture->open(type, filename)) 
     return capture; 

    delete capture; 
    return 0; 
} 

Chyba to jest sekcja powinna pracować na jakoś wskazać sterownik aparatu. ("Typ" to prawdopodobnie numer odnoszący się do sterownika (jak zdefiniowano w prekomp.hpp), ale czym jest "nazwa pliku"?)

Wszelkie sugestie dotyczące dostępu do kamery za pośrednictwem GStreamera byłyby pomocne i docenione. Dzięki!

Odpowiedz

5

Wygląda możemy wywołać za pomocą odpowiedniego aparatu rurociąg GStreamer jak poniżej:

VideoCapture cap("mfw_v4lsrc ! ffmpegcolorspace ! video/x-raw-rgb ! appsink") 

jako wyjście aparat jest w YUV, musimy przekonwertować na RGB, aby przejść do klatki OpenCV. This to miejsce, w którym OpenCV zapewnia, że ​​uzyska przestrzeń barw RGB.

+0

W której wersji OpenCV to działa? –

+0

nie działa przed opencv v3 –

0

Tylko dla odniesienia, to działa w OpenCV 3.0:

VideoCapture cap("souphttpsrc location=http://root:[email protected]:80/mjpg/video.mjpg ! decodebin ! videoconvert ! appsink") 
Powiązane problemy