6

它必须发生,我被困在项目的最后阶段,当我想在我的网络摄像头和 IP 摄像头上使用我的代码时,它就像一个魅力。该 URL 在我的浏览器中完美运行,但 OpenCV 没有任何结果...这是我的代码:

#include <opencv/highgui.h>

using namespace cv;

int main(int argc, char *argv[])
{
    Mat frame;
    namedWindow("video", 1);
    VideoCapture cap("http://192.168.1.99:99/videostream.cgi?resolution=32&rate=0&user=admin&pwd=password&.mjpg");
    while ( cap.isOpened() )
    {
        cap >> frame;
        if(frame.empty()) break;

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

    return 0;
}

和编译器设置:

//Added to the .pro file of QtCreator
INCLUDEPATH += C:\\OpenCV243\\release\\include
LIBS += -LC:\\OpenCV243\\release\\lib \
    -lopencv_core243.dll \
    -lopencv_highgui243.dll

我已经测试过使用相同的代码打开一个 .avi 文件并且它可以工作......但是像这样的公共 IP 摄像头 URLhttp://66.184.211.231/mjpg/video.mjpg却没有!那是怎么回事?

被编辑删除:我认为 FFMPEG 是一个问题,但 v2.4.3。尽管我没有安装任何 FFMPEG 库,但有内置的 FFMPEG 支持和 .avi 文件工作(需要解释一下吗?)

提前致谢,

问候,Mystère 先生

4

2 回答 2

6

通过从源代码的 build\x86\mingw\bin 文件夹中复制 opencv_ffmpeg.dll 并将其粘贴到构建的 DLL 旁边(可通过 PATH 访问的 bin 文件夹)来解决它:我不知道为什么,但是已经生成了 opencv_ffmpeg_64.dll .

于 2013-05-08T23:38:18.493 回答
2

由于您可以连接和抓取网络摄像机的帧,我认为您的库设置正确,您应该能够连接到 IP 摄像机。我认为问题出在所提供的相机 URL 地址上。

尝试登录相机并禁用其密码保护。从 URL 中删除登录名和密码字段,使其类似于"http://192.168.1.99:99/videostream.cgi?resolution=32&.mjpg". 此外,您可以登录相机并检查其分辨率。我注意到你有resolution=32,但我认为它应该是类似的resolution=704x480

希望这可以帮助。

于 2013-05-08T21:41:17.640 回答