无法使用 openCv 从 D-Link DCS 932L 获取视频源

Posted

技术标签:

【中文标题】无法使用 openCv 从 D-Link DCS 932L 获取视频源【英文标题】:Unable to get Video feed from D-Link DCS 932L using openCv 【发布时间】:2013-12-16 12:02:09 【问题描述】:

我正在尝试显示来自 IP 摄像机(D-Link DCS 932L)的视频源。我已经浏览了相同的主题并尝试了不同帖子的代码,但无法从相机获取视频源。 这是我尝试过的代码。

#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;

int main(int argc, char *argv[])

Mat frame;
namedWindow("video", 1);
String url = "http://admin:admin@172.32.20.55:80/image/jpeg.cgi";
VideoCapture cap(url);
/*   VideoCapture cap(0);*/
while ( cap.isOpened() )

    cap >> frame;
    if(frame.empty()) break;

    imshow("video", frame);
    if(waitKey(30) >= 0) break;


return 0;

我尝试了许多不同类型的网址,但我无法显示任何视频供稿。我认为这可能是代码问题,所以我什至尝试显示 USB 网络摄像头并且它工作正常。所以现在我得出结论,问题似乎出在正在传递的 URL 上。这是我尝试过的网址列表。我从 iSpy 获得了这个 URL 选项。这里是那些 URL 的

(JPEG)http://admin:admin@172.32.20.55:80?IMAGE.JPG
(JPEG)http://admin:admin@172.32.20.55:80/image/jpeg.cgi
(MPEG)http://admin:admin172.32.20.55:80/video.cgi?resolution=VGA
(MPEG)http://admin:admin172.32.20.55:80/video/mjpg.cgi
(MPEG)http://admin:admin172.32.20.55:80/mjpeg.cgi?        user=admin&password=admin&channel=0
(MPEG)http://admin:pnqadmin172.32.20.55:80/VIDEO.CGI

请告诉我显示视频供稿时可能出现的问题。 他们是否与 OpenCv 的设置或其他有关。请注意,我正在使用 VS2010 和 C++ 需要所有专家的帮助。 提前致谢。

【问题讨论】:

try : http://172.32.20.55:80/video/mjpg.cgi?dummy=.mjpg (即帮助捕获解决 mjpg 格式)还有什么 admin:admin 应该做什么? 我不知道有一个 ctor 重载需要一个 url ;( @berak: admin:admin 是用户名和密码。 请说这些不是实际的用户名/密码.. 在 CMD warning: Error opening file &lt;../../modules/highgui/src/cap_ffmpeg_impl.hpp:529&gt; 上收到一条消息。你能告诉我是什么问题吗? 【参考方案1】:

我解决了我的问题。问题出在 URL 上。我更改了网址,它运行顺利..! 我使用的网址如下。

"http://USER:PWD@IPADDRESS:8088/mjpeg.cgi?user=USERNAME&password=PWD&channel=0&.mjpg";

【讨论】:

【参考方案2】:

我不断收到同样的错误:

warning: Error opening file &lt;../../modules/highgui/src/cap_ffmpeg_impl.hpp:529&gt;

我试图从 Foscam IP 摄像机流式传输 MJPG 视频。 URL 打开得很好,但我无法读取任何帧。可能是视频编解码器有问题。

这是一个用 Python 编写的对我有用的 hack:https://***.com/a/18411168/3183051

【讨论】:

【参考方案3】:

也许我的回答为时已晚。检查 opencv_ffmpegXXX.dll 或 opencv_ffmpegXXX_64.dll(如果您正在构建 64 位可执行文件)是否在您的可执行文件所在的同一文件夹中。用你使用的opencv版本号替换XXX。

【讨论】:

以上是关于无法使用 openCv 从 D-Link DCS 932L 获取视频源的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 C++ 和 OpenCV 从视频中提取帧

Python opencv 无法从视频中裁剪帧

无法使用 OpenCV 从辅助网络摄像头读取 VideoCapture 中的帧

无法访问从 OpenCV 函数返回的 Mat 值

无法从源代码构建 qt(对于 OpenCV)

mipi generic和dcs指令的区别