C#关于摄像头的使用

转载 2015年07月07日 10:22:22

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

using AForge;
using AForge.Controls;
using AForge.Video;
using AForge.Video.DirectShow;
using Size = System.Drawing.Size;

 

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

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

 

枚举所有的摄像头:

复制代码
FilterInfoCollection videoDevices;
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

foreach (FilterInfo device in videoDevices)
                {
                    //可以做出处理
                }
复制代码

 

连接摄像头:

复制代码
声明:FileterInfo info;
info = videoDevices[0];//选取第一个,此处可作灵活改动

VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[info.MonikerString); videoSource.DesiredFrameSize = new System.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 = new PngBitmapEncoder(); pE.Frames.Add(BitmapFrame.Create(bitmapSource)); string picName = 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;

c# 使用AForge.NET操作摄像头操作代码

根据网上的方法,运行程序摄像头出来了,但是怎么截图呢?找到一个显示图片方法如下 private void video_NewFrame(object sender, NewFrameEventArg...
  • cuoban
  • cuoban
  • 2015年01月18日 01:36
  • 871

C#使用Aforge.net framework采集摄像头视频

作者:李举锋 转自:http://blog.sina.com.cn/s/blog_4ababada0100l5ir.html 对于视频编程,网络上的东西不是很好找,摄像头算是比较初级的东东了,我...
  • whw8007
  • whw8007
  • 2014年02月26日 23:22
  • 1109

C#使用摄像头拍照

using System; using System.Drawing; using System.Collections; using System.ComponentModel; using...

C# 启动Windows摄像头类 使用Aforge.net

/// /// 启动摄像头类 需要引用using AForge.Video; using AForge.Video.DirectShow; /// public clas...

C#使用aforge框架打开摄像头(续)

昨天做了个小测试,把我之前写的用aforge框架打开摄像头的小程序,运行了一晚上,结果今天早上起来发现,程序挂了。调试了好几次,也没找到原因。 --------------------------问...
  • HK_5788
  • HK_5788
  • 2015年10月23日 18:01
  • 1649

C#使用摄像头拍照Demo

  • 2010年08月11日 11:18
  • 33KB
  • 下载

C#读取摄像头处理图片AForge

上一篇文章是用avicap读取摄像头处理图片的,很麻烦,而本篇文章是用新的方法AForge,该方法是很方便很好用的,其中有一篇文章很好,链接如下: http://blog.csdn.net/ch...
  • waeceo
  • waeceo
  • 2015年12月08日 21:27
  • 2779

C#调用摄像头拍摄,截图,视频

cs类: using System.Runtime.InteropServices; using System.Drawing.Imaging; namespace WindowsFor...
  • huyu107
  • huyu107
  • 2016年07月04日 12:35
  • 2272

C#打开电脑摄像头及拍照

首先需要引用一个开源的程序集,叫做WPFMediaKit.dll xmal文件也需要添加引用,代码如下 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#关于摄像头的使用
举报原因:
原因补充:

(最多只允许输入30个字)