尝试从轴摄像机获取图像时,OpenCV会出错

时间:2013-12-04 04:12:37

标签: c++ opencv

我正在尝试在OpenCV中编写一个程序,只显示来自轴摄像头的视频,这是一种ip摄像头。我的问题是OpenCV给了我一个错误和崩溃。

错误是:

  

OpenCV错误:cvGetMat中的错误标志(参数或结构字段)(无法识别或不支持的数组类型),文件/home/pi/opencv-2.4.5/modules/core/src/array.cpp,第2482行
  抛出'cv :: Exception'的实例后终止被调用    what():/ home / pi /opencv-2.4.5 / modules / core / src / array.pp:2482:错误:( - 206)   函数cvGetMat

中无法识别或不支持的数组类型      

中止

我的代码是:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
    Mat img;
    namedWindow("IMG", CV_WINDOW_AUTOSIZE);

    while(true)
    {
        img = imread("http://10.17.14.11/jpg/image.jpg");

        if(img.empty())cout<<"The image is empty\n";//This cout is printed

        imshow("IMG", img);

        if(waitkey(1) >=0)break;
    }
}

我尝试过使用带有地址

的VideoCapture
"http://10.17.14.11/mjpg/video.mjpg" 

但我得到了同样的错误。我还将这两个URL放入我的Web浏览器中,它们都是有效的。

谢谢。

修改
VideoCapture无法正常工作的原因是我没有安装ffmpeg吗?

2 个答案:

答案 0 :(得分:0)

我想函数'imread'只搜索当前主机中的文件。您应该通过其他方式下载文件,然后使用imread打开它。

答案 1 :(得分:0)

错误可能是因为imreadVideoCapture都无法打开远程图像。您可以轻松检查是否尝试读取本地图像。至少,我在VideoCapture documentation中找不到任何暗示远程路径有效的内容。

如果你看到一些例子,也许它正在使用一些扩展类。如果您找到示例的URL,它对未来的读者非常有用。