百度“C# 摄像头”关键词,从搜索结果来看,使用OpenCV、AForge、window动态链接库获取摄像头数据的居多,本文学习基于Aforge.net连接摄像头并从摄像头获取图片的基本方法。
AForge相关包(尤其是相关的控件)主要针对.net framework,虽然在.net core项目下也能安装,但是其提供的控件在工具箱中无法浏览,如下图所示。
新建基于.net framework的Winform项目,在Nuget包管理器中安装下图所示六个包:
获取摄像头图片主要分为三方面功能:
1)枚举计算机连接的所有视频输入设备。主要使用AForge.Video.DirectShow命名空间下的FilterInfoCollection类,并在构造函数中指定获取视频输入设备类型的信息,FilterInfoCollection类还能获取以下预定义类型的信息(FilterInfoCollection类的构造函数输入参数类型为Guid,AForge中使用FilterCategory类预定义了几类信息的Guid);
2)连接视频输入设备。主要使用videoSourcePlayer1控件显示视频流,选定某一视频输入设备之后,基于该设备命令创建VideoCaptureDevice对象实例,然后将该对象实例赋予videoSourcePlayer1控件的VideoSource,接着调用videoSourcePlayer1控件的Start函数显示视频流,如果需要关闭视频流,则调用控件的SignalToStop和WaitForStop即可;
3)获取当前视频截图。主要调用videoSourcePlayer1.GetCurrentVideoFrame()函数,返回Bitmap类型的图片,然后就可按需操作图片了。
代码比较简单,就不贴出来了,有兴趣的可以到参考文献1-4中查看其中的示例代码。测试程序的运行效果如下图所示:
通过上述方式,即可与之前文章中学习的基于图片的文字识别、人脸识别等结合起来。不过之前写的测试程序都是基于.net core编写的,暂时还不清楚能不能用AForge,后续还得深入学习AForge的官网文档。
参考文献:
[1]https://www.cnblogs.com/dogxuefeng/p/6529226.html
[2]https://pythonjishu.com/yvcxhuzbwzecxok/
[3]https://blog.csdn.net/m0_65466579/article/details/130209548
[4]https://blog.csdn.net/alicema1111/article/details/131227768
[5]https://www.aforgenet.com/framework/