C++ 创建使用openCv显示IP摄像头的通用URL

C++ 创建使用openCv显示IP摄像头的通用URL,c++,opencv,video,video-streaming,video-capture,C++,Opencv,Video,Video Streaming,Video Capture,我有一个应用程序,显示来自IP摄像头的实时视频源。我目前拥有两个摄像头CP Plus IP摄像头和D-Link DCS-932l 我使用的代码如下 #include <stdio.h> #include <opencv2/opencv.hpp> int main(){ CvCapture *camera=cvCaptureFromFile("http://admin:admin@172.41.20.76/axis-cgi/mjpg/video.cgi?resolut

我有一个应用程序,显示来自IP摄像头的实时视频源。我目前拥有两个摄像头CP Plus IP摄像头和D-Link DCS-932l 我使用的代码如下

#include <stdio.h>
#include <opencv2/opencv.hpp>


int main(){

CvCapture *camera=cvCaptureFromFile("http://admin:admin@172.41.20.76/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg");
if (camera==NULL)
    printf("camera is null\n");
else
    printf("camera is not null");

cvNamedWindow("img");
while (cvWaitKey(10)!=atoi("q")){
    double t1=(double)cvGetTickCount();
    IplImage *img=cvQueryFrame(camera);
    /*if(img){
        cvSaveImage("C:/opencv.jpg",img);
    }*/
    double t2=(double)cvGetTickCount();
    printf("time: %gms  fps: %.2g\n",(t2-t1)/(cvGetTickFrequency()*1000.), 1000./((t2-t1)/(cvGetTickFrequency()*1000.)));
    cvShowImage("img",img);
}
cvReleaseCapture(&camera);
}
#包括
#包括
int main(){
CvCapture*camera=cvCaptureFromFile(“http://admin:admin@172.41.20.76/axis cgi/mjpg/video.cgi?分辨率=640x480&req_fps=30和.mjpg”);
如果(摄像机==NULL)
printf(“照相机为空\n”);
其他的
printf(“摄像机不为空”);
CVD公司(“img”);
while(cvWaitKey(10)!=atoi(“q”)){
double t1=(double)cvGetTickCount();
IplImage*img=cvQueryFrame(摄像机);
/*如果(img){
cvSaveImage(“C:/opencv.jpg”,img);
}*/
double t2=(double)cvGetTickCount();
printf(“时间:%gms fps:%.2g\n”,(t2-t1)/(cvGetTickFrequency()*1000.),1000./(t2-t1)/(cvGetTickFrequency()*1000.);
cvShowImage(“img”,img);
}
cvReleaseCapture(相机和相机);
}
URL对于CP Plus IP摄像头工作正常。但当我在URL中更改d-link摄像头的用户名、密码和IP地址时,我得到CvCapture摄像头的
NULL
;如何创建通用URL。需要所有专家的帮助才能完成任务。 我使用VS2010和C++,OpenCv。
提前感谢。

RTSP摄像头没有通用的SDP路径/URL。每个特定模型对其特定位置做出响应,有或没有分辨率、速率等的说明符。一些摄像头支持多个流,有或没有音频,有或没有元数据等等

对于D-Link DCS-932l,您需要参考其RTSP参考或其他文档,或者如果其web客户端使用RTSP进行传输,则需要使用网络嗅探器来检测细节

另见:


R:谢谢你抽出时间回答我的问题。我想问你,如果你对iSpy应用程序有任何想法,那么你能告诉我其中可能使用的技术是什么,根据摄像头的不同,他们会给出不同类型的URL。不确定iSpy是否准确,但这里的方法非常简单
1
你会盲目地尝试根SDP路径。即“rtsp:/host:port/”和
2
您维护相机型号的内部数据库,然后查找特定型号(每个配置)的位置,并应用它来构建有效的rtsp URL。R:如何获取不同相机型号的所有可能的rtsp URL。
1
您收集数据库,
2
您可以从已收集数据库的人处获得数据库许可证