我有一个Mobotix c25相机。它是一个IP摄像机,我通过以下方式访问它的流:
Mat frame;
cv::VideoCapture vcap;
if(!vcap.open("http://(IP_address)/cgi-bin/faststream.jpg?stream=full&fps=25.0&data=v.mjpg")){
cout<<"Camera not found"<<endl;
}
正如你所看到的,我选择了每秒25帧。我想救他们每一个人。我这样做:
while (true){
vcap >> frame;
frameNumber++;
string fullPath = "Frame";
stringstream ss;
ss << frameNumber;
string num = ss.str();
fullPath.append(num);
fullPath.append(".jpg");
}
但是,我每秒只保存两帧,因为下一行大约需要400毫秒:
vcap>> frame;
我不知道为什么我有这么大的延迟…我倾向于认为这是相机参数产生的问题,你对此有什么想法吗?
提前感谢。
注意:我不知道这是否重要,但我正在使用相机的80端口。
我终于解决了。我使用的链接是使用访客访问获取图像。
默认情况下,客户机访问限制为每秒2帧。我在相机的"管理菜单"中的"语言和开始页"->"访客访问的刷新率"中更改了这一点,现在我可以捕获每秒25帧。
如果你不想弄乱来宾用户,你可以简单地将URL中的"cgi-bin"替换为"control"来检索不受限制的直播。