• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#实现调用本机摄像头实例

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#调用本机摄像头,c# 监控摄像头拍照,c#调用摄像头,c#调用手机摄像头,c#摄像头编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

编写环境:vs2010

语言:C# WPF

实现步骤:

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

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

</div>

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

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

枚举所有的摄像头:

FilterInfoCollection videoDevices;
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

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

</div>

连接摄像头:

声明:

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();

</div>

关闭摄像头:

videoSourcePlayer.SignalToStop();
videoSourcePlayer.WaitForStop();

</div>

拍照:

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);
  }
}

</div>

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

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

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

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

声明:

BitmapImage bmi = new System.Windows.Media.Imaging.BitmapImage();
</div>

使用时:

bmi.BgeinInit();

bmi.UriSource = new Uri(picName);

bmi.CacheOption = BitmapCacheOption.OnLoad;

bmi.EndInit();

</div>

绑定:

this.image.Source = bmi;
</div>

希望本文所述对于大家的C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#实现调用本机摄像头实例
  • c#测试本机sql运算速度的代码示例分享

相关文章

  • 2017-05-28WinForm中实现picturebox自适应图片大小的方法
  • 2017-05-28C#使用钩子获得按键信息的方法
  • 2017-05-28解析数字签名的substring结构(获取数字签名时间)
  • 2017-05-28C#语法相比其它语言比较独特的地方(一)
  • 2017-05-28C#中winform使用相对路径读取文件的方法
  • 2017-05-28C#画笔Pen保存和恢复图形对象的设置方法
  • 2017-05-28c# HttpWebRequest通过代理服务器抓取网页内容应用介绍
  • 2017-05-28DevExpress GridControl实现根据RowIndex和VisibleColumnsIndex来获取单元格值
  • 2017-05-28C#实现为一张大尺寸图片创建缩略图的方法
  • 2017-05-28C#实现缩放字体的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#简单访问SQLite数据库的方法(安装,连接,查询等)
    • C#自定义类型强制转换实例分析
    • C#实现快递api接口调用方法
    • C#实现发送邮件的三种方法
    • C#拼图游戏编写代码(2)
    • C#利用时间和随即字符串创建唯一的订单编号
    • C#计算两个时间差的方法代码分享
    • 浅谈C#设计模式之工厂模式
    • C#语言主要特性总结
    • C#实现功能强大的中国农历日历操作类

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有