Использование пользовательской камеры в OpenCV (через GStreamer)



Я использую доски Nitrogen6x с камеры ov5640(мипи).



Камера не использует стандартный v4l/v4l, но мы можем передавать видео с помощью GStreamer для его драйвера (mfw_v4l):



gst-launch mfw_v4lsrc ! autovideosink


Я хочу использовать камеру в OpenCV, вызвав ее через GStreamer (GStreamer inside OpenCV).
Я задал вопрос о вызове GStreamer внутри OpenCV здесь , и это продолжение.



Если я включаю поддержку GStreamer, она проверяется в исходном коде , но OpenCV пытается использовать стандартный V4L/V4L2 для GStreamer, который я хочу изменить.
Раздел о вызове GStreamer находится в 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;
}


Я думаю, что это тот раздел, над которым я должен работать, чтобы как-то указать на драйвер камеры. ("тип" здесь, вероятно, является числом, связанным с драйвером (как определено в precomp.hpp), но что такое "имя файла"?)



Любые предложения о том, как получить доступ к камере через GStreamer, будут полезны и оценены.
Спасибо!

592   2  

2 ответов:

Похоже, что мы можем вызвать камеру, используя правильный конвейер GStreamer, как показано ниже:

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

Поскольку выход камеры находится в YUV, нам нужно преобразовать его в RGB, чтобы передать кадры в OpenCV. это , где OpenCV удостоверяется, что он получает цветовое пространство RGB.

Просто для справки, это работает в OpenCV 3.0:

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

Comments

    Ничего не найдено.