Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV捕获视频Ubuntu 12.0.4_C++_Opencv_Ubuntu - Fatal编程技术网

C++ OpenCV捕获视频Ubuntu 12.0.4

C++ OpenCV捕获视频Ubuntu 12.0.4,c++,opencv,ubuntu,C++,Opencv,Ubuntu,我需要一些人帮我解决一个奇怪的问题 我在Ubuntu 120.4中使用了一个简单的应用程序,我使用Eclipse和OpenCV库C++。所以问题是我使用的是一种IPcameras,一切都很完美,下面是我使用的代码: int main(int argc, char *argv[]) { cv::VideoCapture cap("http//:192.168.1.11:80/videostream.cgi?resolution=320x240&rate=0&user=adm

我需要一些人帮我解决一个奇怪的问题

我在Ubuntu 120.4中使用了一个简单的应用程序,我使用Eclipse和OpenCV库C++。所以问题是我使用的是一种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文档,什么都没有。

尝试以下代码来捕获

if(cap.isOpened())
{
while ( cap.grab() )
    {       
        cap.retrieve(frame);

        cv::imshow("video", frame);

        if(cv::waitKey(30) >= 0) break;
    }
}

您的IP地址格式不正确(请使用
http://
而不是
http://:


必须立即遵循协议名称(http)

我找到了解决方案,最后问题是我使用的IP摄像头使用的是“rtsp”协议,而我尝试使用的是http

我不得不使用“rtsp”


谢谢大家的帮助。

可能是相机正忙,或者是在其他应用程序中打开的。我不知道IP摄像头,但对于网络摄像头,openCV需要对设备进行独占锁定。现在我看到浏览器上的摄像头正在更改分辨率,所以我点击:resolution=32而不是resolution=320x240,它正在浏览器上工作,所以问题看起来像是分辨率问题我猜摄像头不忙,但是我仍然无法从我的应用程序中看到相机,看起来由于某种原因应用程序无法捕获视频。嗨,Marcassin,很抱歉这是一个复制和粘贴错误,我有一个正确的格式http://sorry,很抱歉,因为你的问题没有解决:-)嗨,谢谢你的回答,我尝试了你的代码,但都是一样的,我认为问题在于捕获,因为如果我写coutcv::VideoCapture;const std::string videoStreamAddress=“”;如果(!cap.open(videoStreamAddress)){std::cout,即使它没有显示任何内容,也没有关于“错误打开视频…”的内容,因此它甚至无法打开视频。我不知道我还能做什么
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");

    ...
}