OpenCV:打开Mobotix相机Feed

时间:2014-08-05 15:02:56

标签: c++ opencv

我有一台Mobotix相机。这是一台IP摄像头。在API中,它们为我们提供了通过

获取Feed的可能性
  

http:// [用户]:[密码] @ [ ip_adress ]:[端口] /cgi-bin/faststream.jpg?[选项


我尝试过的是像普通网络摄像头一样打开它:

cv::VideoCapture capture("http://...");
cv::Mat frame;

if (capture.isOpened())
    // always false anyway.
while(1)
{
    capture.read(frame);
    cv::imshow("Hi there", frame);
    cv::waitkey(10);
}

仅供参考:Developer Mobotix API Docs


编辑:现在感谢berak我只需要在选项中添加& data = v.mjpg:

?stream=full&fps=5.0&noaudio&data=v.mjpg

请注意,在v.mjpg中,只有[dot] mjpg很重要,你也可以把myfile.mjpg。

现在问题是Feed更新的速度。我有2秒的延迟,加上进给非常慢。 当我更改MxJPG或mxg的流选项时,我得到一个损坏的图像,其中字节没有正确排序。

编辑:我试图直接使用mobotix控制中心更改摄像机参数,但只有分辨率影响了我的OpenCV程序,而没有实际改变我访问图像的速度。

2 个答案:

答案 0 :(得分:0)

最大速度使用fps = 0它在api文档中

类似

http://cameraip/cgi-bin/faststream.jpg?stream=full&fps=0

请参阅http://developer.mobotix.com/paks/help_cgi-image.html

faststream是mjpeg流(用于图像捕获),请确保关闭mxpeg并选择能够提供足够分辨率的最小图像。即使用640×480(设置相机webgui)使其工作,然后增加图像尺寸。

请注意,这是用于图像捕获而不是视频,您需要检测每个jpeg的开头和结尾,然后从接收缓冲区复制到内存中。

vlc可以处理mxpeg,但是需要从命令行启动vlc --ffmpeg-format = mxg或者在gui中设置编辑选项ffmpeg-format = mxg 见https://wiki.videolan.org/MxPEG

答案 1 :(得分:0)

我知道这篇文章很旧,但是我想回答遇到此问题的其他任何人。要获得不受帧速率限制的流,您需要使用其他CGI命令:

http://<camera_IP>/control/faststream.jpg?stream=full&fps=0

根据相机的在线帮助:

http://<camera_IP>/cgi-bin/faststream.jpg (guest access)
http://<camera_IP>/control/faststream.jpg (user access)

“访客”访问的默认限制确实为2 fps,但可以从“管理菜单”>“语言和开始页面”页面进行修改。

以下链接提供了有关如何从MOBOTIX摄像机检索实时流的详细说明:https://community.mobotix.com/t/how-to-access-a-live-stream-with-a-video-client-e-g-vlc/202