它必须发生,我被困在我的项目的最后阶段,当我想在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文件,它可以工作......但像http://66.184.211.231/mjpg/video.mjpg
这样的公共IP摄像机网址却没有!那怎么回事?
通过编辑删除:我认为FFMPEG是一个问题,但是v2.4.3。有内置的FFMPEG支持和.avi文件工作,虽然我没有安装任何FFMPEG库(注意解释?)
提前致谢,
此致 Mystère先生
答案 0 :(得分:6)
通过从源的build \ x86 \ mingw \ bin文件夹中复制opencv_ffmpeg.dll并将其粘贴到构建的DLL旁边(通过PATH可访问的bin文件夹)来解决它:我不知道为什么,但是opencv_ffmpeg_64.dll有而是被生产出来了。
答案 1 :(得分:2)
由于您可以从网络摄像头连接和抓取帧,我认为您的磁带库设置正确,您应该能够连接到IP摄像机。我认为问题在于提供的相机URL地址。
尝试登录相机并禁用其密码保护。从URL中删除登录名和密码字段,因此它将类似于"http://192.168.1.99:99/videostream.cgi?resolution=32&.mjpg"
。此外,您可以登录相机并检查其分辨率。我注意到你有resolution=32
,但我认为它应该是resolution=704x480
。
希望这有帮助。