如何使用OpenCV(C ++代码)访问IP摄像机?有没有办法访问OpenCv + vlc? (Windows 7的)

时间:2014-02-03 07:52:20

标签: c++ visual-c++ opencv camera ip

我尝试了很多方法,但有些程序给我一个灰色的空白屏幕而另一个只是退出代码检测相机无法访问但是找不到解决方案,即使程序在opencv中成功构建。

我正在使用Microsoft Visual Studio 2010和Opencv 2.4.3

这些是我相机的规格。

  • H.264 / MJPEG视频压缩 -G.722音频压缩
  • 帧速率30fps / NTSC,25fps / PAL
  • 分辨率:720P,D1,半D1,CIF,
  • 1/3“SONY CCD,CMOS
  • 警报I / O支持动作检测,日期,时间,事件触发器
  • 自动日/夜
  • 双向音频,广播系统
  • RTSP,VLC(PS / TS)流媒体协议
  • 比特率变量32Kbps-4000Kbps
  • 使用密码保护进行多级用户访问
  • 免费管理软件支持1-100个频道

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);

另请参阅以下链接中的答案

Ip-network-camera-access using OpenCV

OpenCV with Network Cameras

IP camera and OPENCV

答案 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