大华摄像头应用opencvsharp进行实时监控、监控录像保存和播放

1.配置大华摄像机参数
 
检查RTSP端口号

 

修改分辨率,在这里我们主要设置【辅码流】

大华RTSP协议解释
访问主码流
rtsp://admin:tld123456@192.168.1.10:554/cam/realmonitor?channel=1&subtype=0
访问辅码流
rtsp://admin:tld123456@192.168.1.10:554/cam/realmonitor?channel=1&subtype=1
 
2.opencvsharp引用:

 

3.opencvsharp代码示例:

 

获取视频流:
复制代码
        private void savestream()
        {
                VideoCapture cap = new VideoCapture();
                cap.Open("rtsp://admin:tld123456@192.168.1.10:554/cam/realmonitor?channel=1&subtype=1");
                Mat Camera_GImg = new Mat();
                string path = System.Environment.CurrentDirectory+"\\video\\666.avi";
                OpenCvSharp.Size sz = new OpenCvSharp.Size(640,480);
                VideoWriter vw = new VideoWriter(path, FourCCCalcurator.Run('X', 'V', 'I', 'D'), cap.Fps, sz, true);
            while (true)
            {
                cap.Read(Camera_GImg);
                if (Camera_GImg.Empty())
                { break; }
                else
                { vw.Write(Camera_GImg); }

            }          
        }
复制代码
播放监控录像:
复制代码
   private void readvideo()
        {
            byte[] image_byte = new Byte[2048];
            VideoCapture cap = new VideoCapture();
            string path = System.Environment.CurrentDirectory + "\\video\\666.avi";
            cap.Open(path);
            while (true)
            {
                Mat Camera_GImg = new Mat();
                cap.Read(Camera_GImg);
                if (Camera_GImg.Empty())
                {
                    isopen = !isopen;
                    break;
                }
                else
                {
                    image_byte = Camera_GImg.ToBytes();
                    #region 图片嵌入picturebox
                    MemoryStream ms = new MemoryStream(image_byte);
                    ms.Position = 0;
                    img = System.Drawing.Image.FromStream(ms);
                    this.Invoke((EventHandler)delegate//将分线程对主线程的调用委托给主线程
                    {
                        pictureBox1.BackgroundImage = img;
                        pictureBox1.Refresh();
                    });
                    #endregion
                    Camera_GImg.Release();//释放,别等到gc来回收,太占内存
                }
            }
        }
复制代码

 

posted @   四月柳巷  阅读(723)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示