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

Posted

技术标签:

【中文标题】尝试从轴相机获取图像时,OpenCV 出错【英文标题】:OpenCV gives an error when trying to get images from an axis camera 【发布时间】:2013-12-04 04:12:36 【问题描述】:

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

错误是:

OpenCV 错误:cvGetMat,文件 /home/pi/opencv-2.4.5/modules/core/src/array.cpp,第 2482 行中的错误标志(参数或结构字段)(无法识别或不支持的数组类型) 在抛出“cv::Exception”实例后调用终止 什么():/home/pi/opencv-2.4.5/modules/core/src/array.cpp: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 都放入了我的网络浏览器,它们都是有效的。

谢谢。

编辑 VideoCapture 不工作的原因可能是我没有安装 ffmpeg 吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

imread 可能就是这种情况,但我已经看到了 VideoCapture 类从外部位置获取 mjpg 文件的示例,如上所示,但它仍然对我不起作用.感谢您的回复【参考方案2】:

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

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

【讨论】:

有些地方看到使用外部url是answers.opencv.org/question/133/how-do-i-access-an-ip-camera和***.com/questions/17697923/…

以上是关于尝试从轴相机获取图像时,OpenCV 出错的主要内容,如果未能解决你的问题,请参考以下文章

从线程获取相机图像

OpenCV + OpenGL - 获取 OpenGL 图像作为 OpenCV 相机

想要从图像中获取绿色 RGB 通道时出错

尝试使用 OpenCV JAVA 检测图像中的人脸时出错

opencv相机标定(Python)

路径名太长,尝试在 Python 中使用 OpenCV 或 PIL.Image 保存图像时出错