我有一台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程序,而没有实际改变我访问图像的速度。答案 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