我正在尝试在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吗?
答案 0 :(得分:0)
我想函数'imread'只搜索当前主机中的文件。您应该通过其他方式下载文件,然后使用imread打开它。
答案 1 :(得分:0)
错误可能是因为imread
或VideoCapture
都无法打开远程图像。您可以轻松检查是否尝试读取本地图像。至少,我在VideoCapture
documentation中找不到任何暗示远程路径有效的内容。
如果你看到一些例子,也许它正在使用一些扩展类。如果您找到示例的URL,它对未来的读者非常有用。