介绍
怎么在c#中调用AForge实现摄像头?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1:首先下载库文件
输出为MP4需要用到ffmpeg相关的文件,我打包的库已经带了,去官网找的库可以在这个目录找到:
2:添加这些引用:
3:两个全局变量:
//用来操作摄像头 ,private VideoCaptureDevice Camera =,空; ,//用来把每一帧图像编码到视频文件 ,private VideoFileWriter VideoOutPut =, new VideoFileWriter (); ,开始代码: ,//获取摄像头列表 var devs =, new FilterInfoCollection (FilterCategory.VideoInputDevice);//实例化设备控制类(我选了第1个) 时间=Camera new VideoCaptureDevice(开发者[0].MonikerString);//配置录像参数(宽、高帧率,比特率等参数)VideoCapabilities这个属性会返回摄像头支持哪些配置,从这里面选一个赋值接即可,我选了第1个 时间=Camera.VideoResolution Camera.VideoCapabilities [0];//设置回调,aforge会不断从这个回调推出图像数据 +=Camera.NewFrame Camera_NewFrame;//打开摄像头 Camera.Start ();//打开录像文件(如果没有则创建,如果有也会清空),这里还有关于 VideoOutPut.Open (“E:/VIDEO.MP4",, Camera.VideoResolution.FrameSize.Width,, Camera.VideoResolution.FrameSize.Height,, Camera.VideoResolution.AverageFrameRate,, VideoCodec.MPEG4,, Camera.VideoResolution.BitCount); 给AForge输出图像数据的回调方法://图像缓存 时间=private Bitmap  bmp new 位图(1,1);//摄像头输出回调 private void  Camera_NewFrame (object ,发送方,NewFrameEventArgs eventArgs) { ,//写到文件 ,VideoOutPut.WriteVideoFrame (eventArgs.Frame); ,lock (bmp) ,{//释才能放上一个缓存 bmp.Dispose才能();//才能保存一份缓存 时间=bmp 才能;eventArgs.Frame.Clone (), as 位图; ,} }
结束代码:
,,,//停摄像头 ,,Camera.Stop (); ,,//关闭录像文件,如果忘了不关闭,将会得到一个损坏的文件,无法播放 ,,VideoOutPut.Close ();
4:修改App.config,兼容net2.0的一些东西:
& lt; ? xml version=?.0“,编码=皍tf-8" ?比; & lt; configuration> ,& lt; startup  useLegacyV2RuntimeActivationPolicy=皌rue"比; ,& lt; supportedRuntime  version=皏4.0", sku=?NETFramework,版本=v4.5"/比; ,& lt;/startup> ,& lt; supportedRuntime  version=皏2.0.50727"/比; & lt;/configuration>
不然会这样:
。
关于怎么在c#中调用AForge实现摄像头问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。