OpenCV捕获视频Ubuntu 12.0.4

OpenCV capturing video Ubuntu 12.0.4

本文关键字:Ubuntu 视频 OpenCV      更新时间:2023-10-16

我有一个奇怪的问题需要帮助。

我在Ubuntu 12.0.4中做了一个简单的视频捕获应用程序,我使用eclipse和OpenCV库和c++。所以问题是,我正在使用一种ipcamera,一切都很完美,这是我正在工作的代码:

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;
}

效果很好。我的问题是,现在我必须与其他ipcamera一起工作,我不知道为什么它不起作用,我使用相同的代码(更改Ip),应用程序就像思考一样。问题是我可以通过浏览器看到相机,所以相机正在工作,然后我认为应该是代码问题捕获结构,但我尝试了许多组合,没有任何结果,我检查了IPcamera文档,没有任何结果。

我找到了解决方案,最后的问题是我使用的IP摄像机使用"rtsp"协议,但我试图使用http。

我不得不使用"rtsp"

谢谢大家的帮助。

您的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)

尝试以下代码捕获....

if(cap.isOpened())
{
while ( cap.grab() )
    {       
        cap.retrieve(frame);
        cv::imshow("video", frame);
        if(cv::waitKey(30) >= 0) break;
    }
}