c# 远程监控(2) 摄像头调研

经过N多调研,最终选择了OpenCV(Emgu CV)

** 至于DirectShow, OpenCV等等其他大家可以百度,在这里我就不再赘述

环境:vs2010 vs2012 vs2013均可

OpenCV官方网站为:Emgu CV

也可以去我的百度网盘下载安装包:libemgucv-windows-universal-cuda-2.4.10.1940

然后就可以自己想怎么玩,怎么玩了。

安装好后:

我的一个Demo,用来打开摄像头:

下载地址:c#调用摄像头

代码结构:

运行效果:

核心代码解释:

namespace CameraCapture
{
    public partial class CameraCapture : Form
    {
        private readonly Capture _capture;
        private bool _captureInProgress;

        public CameraCapture()//构造函数
        {
            InitializeComponent();
            try
            {
                _capture = new Capture();//构造一个摄像头实例
                _capture.ImageGrabbed += ProcessFrame;//图像捕捉事件
            }
            catch (NullReferenceException excpt)
            {
                MessageBox.Show(excpt.Message);
            }
        }

        private void ProcessFrame(object sender, EventArgs arg)
        {
            Image<Bgr, Byte> frame = _capture.RetrieveBgrFrame();//获取视频帧

            Image<Gray, Byte> grayFrame = frame.Convert<Gray, Byte>();
            Image<Gray, Byte> smallGrayFrame = grayFrame.PyrDown();
            Image<Gray, Byte> smoothedGrayFrame = smallGrayFrame.PyrUp();
            Image<Gray, Byte> cannyFrame = smoothedGrayFrame.Canny(100, 60);

            captureImageBox.Image = frame;
            grayscaleImageBox.Image = grayFrame;
            smoothedGrayscaleImageBox.Image = smoothedGrayFrame;
            cannyImageBox.Image = cannyFrame; //转成图片并显示在主界面上
        }

        private void CaptureButtonClick(object sender, EventArgs e)
        {
            if (_capture != null)
            {
                if (_captureInProgress)
                {
                    //stop the capture
                    captureButton.Text = "Start Capture";
                    _capture.Pause();
                }
                else
                {
                    //start the capture
                    captureButton.Text = "Stop";
                    _capture.Start();
                }

                _captureInProgress = !_captureInProgress;
            }
        }

        private void ReleaseData()//释放资源
        {
            if (_capture != null)
                _capture.Dispose();
        }

        private void FlipHorizontalButtonClick(object sender, EventArgs e)
        {
            if (_capture != null) _capture.FlipHorizontal = !_capture.FlipHorizontal;
        }

        private void FlipVerticalButtonClick(object sender, EventArgs e)
        {
            if (_capture != null) _capture.FlipVertical = !_capture.FlipVertical;
        }
    }
}

扩展

emgucv不仅可以控制摄像头,而且可以直接播放本地视频,但是需要一些配置

        public CameraCapture()
        {
            InitializeComponent();
            try
            {
                //_capture = new Capture();
                var fileName = "文件地址";
                _capture = new Capture(fileName);
                _capture.ImageGrabbed += ProcessFrame;
            }
            catch (NullReferenceException excpt)
            {
                MessageBox.Show(excpt.Message);
            }
        }

需要下载两个第三方文件:

opencv_ffmpeg.dll

opencv_ffmpeg_64.dll

三方插件可以去 github opencv  下载 三方控件,我的百度网盘:opencv_ffmpeg

这两个文件需要再重新改下名字(因为加进去报错,始终用不起,谷歌了好半天):

opencv_ffmpeg.dll opencv_ffmpegVersion.dll -> opencv_ffmpeg2410_64.dll

opencv_ffmpeg_64.dll opencv_ffmpegVersion_64.dll -> opencv_ffmpeg2410_64.dll

最后复制加到bin目录下的 x86,x64 下就可以播放本地视频了

效果如下:

有问题可以站内信

时间: 2024-11-05 05:59:11

c# 远程监控(2) 摄像头调研的相关文章

c# 远程监控(1) 大纲

闲得"蛋疼",准备用C# winform做一个远程视频监控,或者说局域网视频会议,也方面这方面的资料一般多,但是都需要整合,最主要没有可以运行的源代码,因此在这里分章节逐渐完善. Summary: 远程监控:获取远程摄像头的实时视频监控数据,并在中央管理PC上显示. 实现过程与方案: 1.前端摄像头 a.使用本地或某本地摄像头模拟远程摄像头,并获取摄像帧数据. 多媒体软件调研,可以调用摄像头 对视频数据进行H.264压缩 获取视频帧数据 b.处理获取到的摄像帧数据,并传输 对帧数据进行

ZigBee红外远程监控系统设计

现代安防监控越来越受到重视.它一般由图像采集.传输和存储系统组成.采用高精度的摄像头配合先进的图像处理技术和传输技术.其安防监控性能虽然很好,但也存在投资成本大,实时报警性能差.数据量大,隐蔽性差等缺点.鉴于这些不足,某些应用场合也可以用红外监控作为监控手段. 红外探测器自1800年被首次制作出来以后,经过两百多年的发展,技术已经十分成熟.它是指将不可见的红外辐射光探测出来,并且转化为可测量的信号的技术,具有适应性好,隐蔽性好,保密性强,性能稳定等优点.通过对特定波段的红外射线的探测,就可以实现

关于Android远程监控APP源码

这篇文章的目的在乎请教知名人士,来开放一个源码.在这里说明,远程监控是对场外的摄像头,而不是用手机的摄像头摄像到服务器上,这点要理解.关于很多网上的文章都是传到服务器的方式.可以准确的来说,他们根本没有理解这个概念就乱发博文,当然如果博文有利于Android学者学当然是好的,如果是误人子弟,我是建议你先仔细想想这篇文章对学者们是否有用,如果是否,就不用乱发了.下面考论这个源码的重要性. 一.需求确定 有许多客户都需要实现一个手机能对场外的摄像头进行实时监控,能进行控制摄像头转动,拉焦距,抓图等.

异地组网 无网络区域实现远程监控

作为新一代的安防人,成天与监控.门禁打交道,当然还有甲方爷爷,练就了一身强壮的身体,还有一个察言观色的技能,就是甲方爷爷说啥我们这些小喽喽们就得干,基本没啥反抗的,为了赚钱养家,啥事都得自己扛着,哎,说多了都是泪.说正事,最近接了个小活,说是小活也不小,就是给三个山头的临时值班处安装摄像头,其实安装摄像头都是简单的事情,地方也勘察过,去了立一根杆子,摄像头一挂就行了,而且确认现场还有电,他们自己以前为方便做饭已经拉上去了,最大的问题就是没有网,这没网的话就没法实时监控了.我最早给的建议是每个点安

远程监控有效保护家庭安全

随着网络传输技术的快速发展,通过网络摄像头实现远程视频监控,使得远程监控家庭状况成为现实. 基于家庭网络的视频监控系统需求分析 1)父母总是担心家中的孩子怎么样了,经常在外都会牵肠挂肚.有了家庭网络视频监控系统,一切都变得简单了.在办公的闲余之际,只要能上网,就能通过安装在家里的网络摄像机,查看保宝贝的情况,了解情况后保证可以安心工作了. 2)在外出活动的时候,不确定家中的门窗是否关闭,没关系,拿出笔记本,没有笔记本?没关系,拿出手机来,直接通过家里的摄像头查看家里的情况,如果真的忘记关了,只能

visualVM远程监控JVM

对于完全没用使用过visualVM的初学者 环境:Windows PC上使用visualVM监控远端JVM @@@@jstatd方式连接@@@@ 1.Windows安装jdk,$JAVA_HOME/bin/jvisualvm.exe,jdk自带图形化监控工具,双击运行 2.linux安装jdk, $JAVA_HOME/bin 下创建一个新文件  jstatd.all.policy,编辑该文件,填入内容,配置环境变量,若没有配置,file后面添加tool.jar的绝对路径 grant codeba

通常所说的网络远程监控系统是什么?

通常所说的远程监控系统是一款远程监控软件,是由一台主电脑控制端远程监控另一台被控电脑端,而所谓的远程一般是指通过局域网远程监控. 当操作者使用主控制端电脑监控被控端电脑时,就如同自己在使用被控端电脑一样,清晰看到被控端电脑当前屏幕操作,可以启动被控端电脑的程序.限制访问网址.限制聊天.上网.玩游戏.禁止U盘读取以及文件传输等操作,利用网络远程监控系统,被控端电脑操作行为皆掌握在自己手中.  有什么用途? 网络远程监控系统一般是用于正当用途,比如用于企业单位对上班员工电脑的管理.规范员工上班的不良

如何使用JVisualVM远程监控和优化Tomcat和Java程序的内存和CPU

如何使用VisualVM远程监控和优化Tomcat和Java程序的内存和CPU JVisualVM 是Java 继 JConsole 之后有一款力作,是集成了诸多分析和优化Java程序的工具的工具. 我们可以用它来为优化Java程序的内存占用,找出内存泄漏,分析Java程序的CPU占用情况,根据JVisualVM获取到的数据优化JVM配置等.   总之是相当好了~~~~ JVisualVM 位于JAVA_HOME/bin目录下 . 直接运行可打开. 打开后界面如下: 由于JVisualVM 本身

使用JVisualVM 远程监控Tomcat程序中使用JMX鉴权访问

如何配置JVisualVM远程监控Tomcat程序请参考:http://hiandroidstudio.blog.51cto.com/5902332/1795310 1.配置JMX访问文件     # cd $CATALINA_HOME/conf/     # cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password     # chmod 700 jmxremote.password    (

使用树莓派实现微信远程监控

关键字:树莓派 微信公众平台 硬件 远程监控 远程控制 年初的时候用mk802+arduino做了一个小项目, 实现获取室内温度.湿度,视频监控, 远程开关控制等功能, 用了手机微信做了客户端.后来看见网上介绍有树莓派这个好玩的硬件, 于是想把这个小项目移植到树莓派上.到手后用了一天时间移植了过去(安装配置系统花了不少时间...). 下面我分享一下用树莓派实现微信公共平台服务器的一些心得吧,和大家一起学习研究, 开发树莓派的潜力, 实现更多好玩神奇的功能.教程需要你了解一点python. 1.首