当前位置:  编程技术>.net/c#/asp.net

C#实现调用本机摄像头实例

    来源: 互联网  发布时间:2014-11-02

    本文导语:  本文实例源自一个项目,其中需要调用本机的摄像头进行拍照,分享给大家供大家参考之用。具体步骤如下: 硬件环境:联想C360一体机,自带摄像头 编写环境:vs2010 语言:C# WPF 实现步骤: 下载AForge类库,并添加引用: usi...

本文实例源自一个项目,其中需要调用本机的摄像头进行拍照,分享给大家供大家参考之用。具体步骤如下:

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

编写环境:vs2010

语言:C# WPF

实现步骤:

下载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#程序设计有所帮助。


    
 
 

您可能感兴趣的文章:

  • vmware能实现不用交换机就在本机中交互吗?
  • 在JSP中,我想查找本机指定目录下的一个文件,怎么来实现呢?
  • 关于vmware+fedora怎么与本机实现互联?
  • 如何编程实现,判断本机网线是否断开?
  • 请问如何获得本机IP,java实现
  • 程序实现:如何在/dev目录下找到本机的设备文件名,比如/dev/hda
  • 我想用WIN的远程登陆软件来登陆本机虚拟的LINUX,怎么实现?LINUX的IP配置我也不会,能详细的说说么?
  • VC实现获取本机MAC地址的方法
  • linux下编程实现获取本机ip地址的分配方式
  • linux c 获取本机公网IP的实现方法
  • C++实现获取IP、子网掩码、网关、DNS等本机网络参数的方法
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  • c#实现TextBox只允许输入数字
  • C# Winform 整个窗口拖动的实现代码
  • c# ListView实现双击Item事件的变通方法
  • C#实现随鼠标移动窗体实例
  • C#中的FileUpload 选择后的预览效果具体实现
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • C#的锯齿数组以及C++实现代码
  • C#格式化文件大小的实现代码
  • C#怎样才能实现窗体最小化到托盘呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用RMI进行远程对象调用的时候,可不可以实现多个调用远程对象的并发操作
  • 用shell调用api接口能实现吗?100分就是你的了
  • JSP调用EJB如何实现耦合度最底
  • strace程序截获进程的系统调用实现方法是什么?
  • 整型数据做函数的参数,怎样实现传地址,和调用程序共用一个地址?
  • 如何实现exec系列的循环调用???
  • 请教gcc编程 问题 关于调用中断 实现 图形模式
  • 如何实现linux下ant调用sh(带输入参数),参数自动填入并执行sh
  • 在java中调用系统FTP命令,实现文件传输???
  • 不理解exec家族的调用是如何实现的。。。求解
  • 请问application (or applet)如何实现对applet 小程序的调用??
  • Linux fork函数的系统调用实现过程是什么呢?
  • destoon调用企业会员公司形象图片的实现方法
  • 请问JSP里面怎样实现上传WORD和EXCEL文件,上传之后如何在IE里面调用显示!!!
  • 内核源文件/net/socket.c中调用其他模块的函数,该如何实现
  • 想在linux下用C实现gzip压缩与解压缩,有没有相关库函数可以调用?
  • java中调用GDAL DLL的实现方法
  • Unix下System函数实现中为何要使用shell去调用执行程序?
  • python调用短信猫控件实现发短信功能实例
  • UNIX环境下,如何实现dup2函数,不允许调用fcntl?
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3