C#通过OpenCv获取网络摄像头(IP摄像头)拍摄到的视频

@TOC

本文介绍

本文介绍利用C#获取IP摄像头拍摄到的实时视频

说在前面

首先需要一台支持rtsp协议的网络摄像头(购买的时候会有说明,或者问客服)
环境:visual studio 2017
网络摄像头的使用:(以我买的摄像头为例子)
买了以后看看他们的说明书,首先需要下载专门的软件,在摄像头通电以后用该软件扫摄像头上面的二维码添加设备,添加成功后就可以在手机上实时看到摄像头的拍摄内容了,同时也可以在这软件查到该摄像头的一些信息,例如IP地址网关等等(其中这个IP地址就是下面我们需要找到的rtsp地址的一部分,需要注意一下)

步骤

  1. 安装opencv
  2. 获取视频资源的代码书写
  3. 获取网络摄像头的rtsp地址
  4. 效果展示

安装opencv

安装opencv很简单 具体参考我之前的这篇文章
C# winform项目使用OpenCv调用电脑本机摄像头

获取视频资源的代码书写

所有代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using OpenCvSharp;
using OpenCvSharp.Blob;
using OpenCvSharp.Extensions;
using OpenCvSharp.UserInterface;
using System.Threading;

namespace Call_the_camera_for_OpenCv
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
        	//VideoCapture后面参数为0表示获取电脑本机摄像头拍摄的内容 如果输入rtsp地址就是获取网络摄像头的拍摄内容
        	//var capture = new VideoCapture(0);
            string rtspStr = "rtsp://账号:密码@IP摄像头的IP地址:554/stream1";
            var capture = new VideoCapture(rtspStr);

            //此处参考网上的读取方法
            int sleepTime = (int)Math.Round(1000 / capture.Fps);
            // 声明实例 Mat类
            Mat image = new Mat();

            // 进入读取视频每镇的循环
            while (true)
            {
                capture.Read(image);
                //判断是否还有没有视频图像 
                if (image.Empty())
                    break;
                // 在picturebox中播放视频, 需要先转换成bitmap格式
                pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image);
                Cv2.WaitKey(sleepTime);
            }
        }
    }
}

注意代码
需要添加一个button控件 并且为这个button控件添加 一个 Click事件button1_Click
我们知道 视频就是无数张图片的集合 所以我们需要添加一个picturebox控件,本项目控件名字为pictureBox1 主要是为了显示拍摄到的视频

如果不清楚如何新建C#项目添加控件 可以先上网查查
或者参考我这篇文章
添加链接描述

看过上面的代码我们就知道
VideoCapture后面参数为0表示获取电脑本机摄像头拍摄的内容 如果输入rtsp地址就是获取网络摄像头的拍摄内容
那么如何获取摄像头的rtsp地址呢

获取网络摄像头的rtsp地址

首先网络摄像头的rtsp地址格式每个品牌都不一样,着需要我们去问客服问卖家,只有他们知道。
一些比较出名的品牌的话可能在百度也能查到
我用的是京目摄像头
通过问淘宝客服知道rtsp格式为
rtsp://密码:账号@网络摄像头的IP地址/stream1
我们需要找到的是IP地址和账号以及密码

首先是IP地址的查找
这个我们可以在买摄像头的时候专门用来查看监控的软件上面查到(每个网络摄像头都会有专门的软件来查看拍摄的视频,主要是为了远程监控吧)
也可以问客服要一个搜索摄像头IP地址的工具,我当时就问了他要。
这个搜索工具是一个电脑软件,首先需要电脑和摄像头连接在同一个wifi上,也就是局域网,然后打开软件就能立马搜索到连接在这个wifi上面的摄像头,话说可能这个工具可以在外面查查附近有没有监控,挺好用的。

剩下的就是密码账号的查找
这个可以直接问客服
但是我当时问客服客服说是123456后来我发现是错的(当时真的弄了我半天没搞成,立马给了客服差评)
也可以浏览器中靠运气试出来(我当时就是试出来的),具体操作就是,因为在IP搜索工具上面查到了摄像头的IP地址嘛而且他说端口是80端口,然后我就在浏览器中输入 ip地址:80 这样,然后就打开了一个登录界面(注意前提是电脑和摄像头连接在同一个wifi下),登录界面需要输入账号和密码,然后我就按照客服给的rtsp账号和密码登录结果不行然后密码换成12345就可以了,那就可以知道rtsp的账号和密码了
C#通过OpenCv获取网络摄像头(IP摄像头)拍摄到的视频_第1张图片
后来发现这个网页里面也可以找到摄像头的IP地址

找到完整的rtsp地址以后,就可以代入代上面的代码里面了,点击运行就能看到效果。注意电脑和摄像头必须连接在同一个wifi下

你可能感兴趣的:(C#,计算机网络,视频,c#,opencv,网络,视频处理)