我尝试了很多方法,但有些程序给我一个灰色的空白屏幕而另一个只是退出代码检测相机无法访问但是找不到解决方案,即使程序在opencv中成功构建。
我正在使用Microsoft Visual Studio 2010和Opencv 2.4.3
这些是我相机的规格。
答案 0 :(得分:4)
这是适合我的代码。
#include <opencv\cv.h>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
int main()
{
Mat frame;
namedWindow("video", 1);
VideoCapture cap("http://USERID:PASSWORD@IPADDRESS:PORT/video.cgi?resolution=640x360&req_fps=50&.mjpg");
if(!cap.isOpened())
{
cout<<"Camera not found"<<endl;
getchar();
return -1;
}
while ( cap.isOpened() )
{
cap >> frame;
if(frame.empty()) break;
imshow("video", frame);
if(waitKey(30) >= 0) break;
}
return 0;
}
答案 1 :(得分:1)
您可以使用OpenCV VideoCaptur课程来打开来自网络的视频流
使用
VideoCapture cap;
cap.open(192.168.1.180/?action=stream?dummy=param.mjpg);
另请参阅以下链接中的答案
答案 2 :(得分:0)
首先,您需要发现ONVIF相机的rtsp网址。比你使用@Mayur上的代码回答用你的rtsp url替换rtsp url。
要发现您的rtsp网址,您可以在此列表中查找: http://www.soleratec.com/support/rtsp/rtsp_listing
或者使用一些找到它的软件,我推荐使用软件onvif-device-tool(link)或gsoap-onvif(link),两者都适用于Linux,查看你的终端, rtsp网址将在那里。在发现rtsp网址后,我建议在vlc播放器(link)上测试它,您可以使用菜单选项“打开网络流”或从命令行进行测试:
vlc rtsp://your_url