尝试从轴相机获取图像时,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】:该错误可能是因为imread
或VideoCapture
都无法打开远程图像。很容易检查您是否尝试读取本地图像。至少,我在VideoCapture
documentation 中找不到任何表明远程路径有效的内容。
如果你看到了一些例子,也许它使用了一些扩展类。如果您找到示例的 URL,这对未来的读者可能非常有用。
【讨论】:
有些地方看到使用外部url是answers.opencv.org/question/133/how-do-i-access-an-ip-camera和***.com/questions/17697923/…以上是关于尝试从轴相机获取图像时,OpenCV 出错的主要内容,如果未能解决你的问题,请参考以下文章