在OpenCV中使用自定义相机(通过GStreamer)
我用ov5640相机(mipi)使用Nitrogen6x板。
相机不使用标准v4l / v4l,但我们可以使用GStreamer为其驱动程序(mfw_v4l)传输视频:
gst-launch mfw_v4lsrc ! autovideosink
我想通过GStreamer(OpenCV内部的GStreamer)调用OpenCV中的相机。 我在这里问了一个关于在OpenCV中调用GStreamer的问题,这是后续。
如果我启用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;
}
我想这是我应该以某种方式指向相机的驱动程序的部分。 (这里的“type”可能是与驱动程序相关的数字(在precomp.hpp中定义),但是“filename”是什么?)
任何有关如何通过GStreamer访问摄像机的建议都会对您有所帮助和赞赏。 谢谢!
看起来我们可以使用如下所示的适当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:admin@192.168.5.123:80/mjpg/video.mjpg ! decodebin ! videoconvert ! appsink")
链接地址: http://www.djcxy.com/p/25419.html
上一篇: Using custom camera in OpenCV (via GStreamer)
下一篇: Autocompletion of AspectJ not working in eclipse with spring roo 2 project