C#调用本机摄像头

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

这段时间一个小项目中需要调用本机的摄像头进行拍照,网上搜集了一些资料以及解决的一些小问题,在此记录以便后续使用。

硬件环境:联想C360一体机,自带摄像头

编写环境:vs2010

语言:C# WPF

下载AForge类库,并添加引用:

usingAForge;usingAForge.Controls;usingAForge.Video;usingAForge.Video.DirectShow;usingSize = System.Drawing.Size;

View Code

在xaml界面中添加VideoSourcePlayer控件,此次稍微解释如何添加外来控件:

在工具箱中添加新的选项卡,右键添加选择项,浏览选择控件dll确定,引用控件即可添加到工具箱中。

枚举所有的摄像头:

FilterInfoCollection videoDevices;

videoDevices=newFilterInfoCollection(FilterCategory.VideoInputDevice);foreach(FilterInfo deviceinvideoDevices)

{//可以做出处理}

连接摄像头:

声明:FileterInfo info;

info = videoDevices[0];//选取第一个,此处可作灵活改动

VideoCaptureDevice videoSource =newVideoCaptureDevice(videoDevices[info.MonikerString);

videoSource.DesiredFrameSize=newSystem.Drawing.Size(214,281);

videoSource.DesiredFrameRate=1;

videoSourcePlayer.VideoSource=videoSource;

videoSourcePlayer.Start();

关闭摄像头:

videoSourcePlayer.SignalToStop();

videoSourcePlayer.WaitForStop();

拍照:

if(videoSourcePlayer.IsRunning)

{

string path = "e:\"

BitmapSource bitmapSource=System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(

videoSourcePlayer.GetCurrentVideoFrame().GetHbitmap(),

IntPtr.Zero,

Int32Rect.Empty,

BitmapSizeOptions.FromEmptyOptions());

PngBitmapEncoder pE=newPngBitmapEncoder();

pE.Frames.Add(BitmapFrame.Create(bitmapSource));stringpicName = path +"paizhao"+".jpg";if(File.Exists(picName))

{

File.Delete(picName);

}using(Stream stream =File.Create(picName))

{

pE.Save(stream);

}}

项目中要求是摄像头处于监控状态,拍照后画面固定存储,不满意可以清空再次进行拍照,直到满意为止。

做法是在videoSourcePlayer的上面添加一个image控件,因为项目是WPF做的,所有照片显示只能添加image控件,有两点需要注意:

1)WPF引用winform控件需要使用WindowsFormsHost控件,所以监控视频和照片显示时是控件WindowsFormsHost和image控件的显示和隐藏,此处走了一段弯路所以记录下来。

2)image控件的source已经绑定,但是照片需要清空删除该照片资源,系统提示的大致意思是资源已经被占用无法删除。解决途径:

声明:BitmapImage bmi = new System.Windows.Media.Imaging.BitmapImage();

使用时:bmi.BgeinInit();

bmi.UriSource = new Uri(picName);

bmi.CacheOption = BitmapCacheOption.OnLoad;

bmi.EndInit();

绑定:this.image.Source = bmi;

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航