我需要帮助解决一个奇怪的问题。
我在Ubuntu 12.0.4中做了一个用于捕获视频的简单应用程序我正在使用带有C ++的eclipse和OpenCV库。所以问题是我正在使用一种IPcameras,一切都很完美,这是我工作的代码:
int main(int argc, char *argv[])
{
cv::VideoCapture cap("http//:192.168.1.11:80/videostream.cgi?resolution=320x240&rate=0&user=admin&pwd=admin&.mjpg");
cv::Mat frame;
cv::namedWindow("video");
cvMoveWindow("video", 0, 0);
while ( cap.isOpened() )
{
cap >> frame;
if(frame.empty()) break;
cv::imshow("video", frame);
if(cv::waitKey(30) >= 0) break;
}
return 0;
}
这非常好。我的问题是,现在我必须与其他IPcameras一起工作,我不知道为什么它不起作用,我使用相同的代码(更改Ip),而且应用程序就像思考一样。事情是我可以通过浏览器看到相机,所以相机工作,然后我认为应该是捕获结构的代码问题,但我尝试了很多组合,没有,我检查IPcamera文档,没有什么。
答案 0 :(得分:2)
我找到了解决方案,最后问题是我使用的IP摄像机使用“rtsp”协议,但我试图使用http。
我不得不使用“rtsp”
谢谢大家的帮助。
答案 1 :(得分:1)
您的IP地址格式不正确(使用http://
代替http//:
)
int main(int argc, char *argv[])
{
cv::VideoCapture cap("http://192.168.1.11:80/videostream.cgi?resolution=320x240&rate=0&user=admin&pwd=admin&.mjpg");
cv::Mat frame;
cv::namedWindow("video");
...
}
:
必须立即遵循协议名称(http)
答案 2 :(得分:-1)
尝试使用以下代码捕获....
if(cap.isOpened())
{
while ( cap.grab() )
{
cap.retrieve(frame);
cv::imshow("video", frame);
if(cv::waitKey(30) >= 0) break;
}
}