在DevExpress中使用CameraControl控件进行摄像头图像采集
在我们以前的项目了,做摄像头的图片采集,我们一般还是需要做一个封装处理的,在较新版本的DevExpress控件里面,增加了一个CameraControl控件,可以直接调用摄像头显示的,因此也可以做头像采集等功能,本文介绍如何基于这个控件做相关的图像采集操作。
1、CameraControl控件介绍
该控件从15.1开始,就开始加入控件组了,控件的使用很简单,直接拖动到界面就可以在Winform界面上使用了。本案例基于16.1进行开发的,因此也都具有这些控件模块的。
例如我们直接把CameraControl控件拖动到界面上,然后运行界面就可以看到如下效果。

在摄像的界面上,有一个配置的选项,可以对摄像头的分辨率等参数进行设置处理。

同时在PictureEdit控件上,也可以开启摄像头采集功能,只需要在控件属性里设置一下即可:

运行界面得到效果如下所示。

这个采集图片的菜单项文字没有汉化,因此有点怪异,我们也可以通过使用其内置的对话框(TakePictureDialog )进行图片采集操作。
具体代码如下所示:
private void btnInternal_Click(object sender, EventArgs e)
{
TakePictureDialog d = new TakePictureDialog();
if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.pictureEdit1.Image = d.Image;
}
}
调用得到的对话框是内置的,界面也是无法修改调整,包括文字内容。

2、自定义采集对话框
为了更好的实现对头像的采集操作,我们可以仿照这个对话框模块,做一个自定义的窗体,实现摄像头图像的采集操作,如下所示。

同时我们在对话框窗体里面设置一个Public的图像对象属性,如下所示
/// <summary>
/// 采集图片
/// </summary>
public Image CameraImage { get; set; }
这样我们就方便设置和提取图像信息了。
捕获图像的代码就是从摄像控件里面获取一个快照就可以了,如下所示。
private void btnCapture_Click(object sender, EventArgs e)
{
this.CameraImage = this.cameraControl1.TakeSnapshot();
this.pictureEdit1.Image = this.CameraImage;
}
然后在窗体退出的时候,记得释放摄像头的资源,否则第二次就提示占用,无法使用了。
private void FrmCamera_FormClosing(object sender, FormClosingEventArgs e)
{
this.cameraControl1.Dispose();
}
整个对话框的完整代码如下所示。
public partial class FrmCamera : Form
{
/// <summary>
/// 采集图片
/// </summary>
public Image CameraImage { get; set; } public FrmCamera()
{
InitializeComponent();
} private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
} private void btnCapture_Click(object sender, EventArgs e)
{
this.CameraImage = this.cameraControl1.TakeSnapshot();
this.pictureEdit1.Image = this.CameraImage;
} private void FrmCamera_FormClosing(object sender, FormClosingEventArgs e)
{
this.cameraControl1.Dispose();
}
}
最后运行可以得到界面如下所示。

这种处理方式比较好,我在该控件出来之前,在基础界面类库里面,使用肖像控件来处理摄像头图像采集的,如在我博客介绍《Winform开发框架之肖像显示保存控件的实现》所示。

例如在会员管理系统里面,就是利用肖像管理控件,通过之前的摄像头公用类库实现的图形采集操作的。

这里其实是利用一个摄像头类库来实现的,不过现在既然DevExpress本身就提供控件支持,那么我们也可以直接利用它了,这样更加方便,更少代码。
在DevExpress中使用CameraControl控件进行摄像头图像采集的更多相关文章
- 使用Devexpress中的CharControl控件,需要控制AxisY轴的显示范围,需要使用该控件的BoundDataChanged事件
一.控制ChartControl的Y轴范围 使用Devexpress中的CharControl控件,需要控制AxisY轴的显示范围,需要使用该控件的BoundDataChanged事件,具体代码如下: ...
- 在DevExpress中使用WizardControl控件构建多步向导界面
利用好的界面控件,往往能做成比较界面体验效果.在一些界面操作里面,我们可能把它拆分为几部进行处理,这个时候引入WizardControl向导控件应该是比较不错的选择了.多步的处理方式,可以让用户避免一 ...
- DevExpress 中 用 LookUpEdit 控件 代替 ComboBoxEdit 控件来绑定 DataTable
绑定数据及定义列信息 LookUpEdit lue = lookUpEdit1; DataTable dt = new DataTable(); dt.Columns.Add(new DataColu ...
- DevExpress中的GridControl控件设置了列Readonly后,想双击弹出明细的实现
OptionsBehavior.Editable = true时,会有二个对象触发事件:view触发ShownEditor 事件(第一单击时)和内置编辑器的DoubleClick事件所以必须处理这二个 ...
- 在DevExpress程序中使用SplashScreenManager控件实现启动闪屏和等待信息窗口
在我很早的WInform随笔<WinForm界面开发之"SplashScreen控件">有介绍如何使用闪屏的处理操作,不过那种是普通WInform和DevExpress ...
- DevExpress学习系列(控件篇):GridControl的基本应用
一般属性设置 不显示分组框:Gridview->Option View->Show Group Panel=false 单元格不可编辑:gridcontrol -->gridview ...
- 关于 DevExpress.XtraTreeList.TreeList 树形控件 的操作
作为一个C#程序员,在写程序时一直以来都使用的微软那一套控件,用起来特别爽,可是最近公司的一个项目用到了DevExpress框架,不用不知道,一用吓一跳,不得不承认这个框架确实很强大,效果也很炫,但是 ...
- DevExpress winform XtraEditor常用控件
最近在公司里面开始使用DevExpress winform的第三方控件进行开发和维护,这里整理一些常用控件的资料以便于后续查看 ComboBoxEdit 这个控件和winform自带的控件差不多,使用 ...
- DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表
原文:DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助 ...
随机推荐
- 手动添加kdump
背景: Linux嵌入式设备内核挂死后,无法自动重启,需要手动重启.而且如果当时没有连串口的话,就无法记录内核挂死时的堆栈,所以需要添加一种方式来记录内核挂死信息方便以后调试使用.设备中增加k ...
- 谈一谈NOSQL的应用,Redis/Mongo
1.心路历程 上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票.最开始是没有用过redis的,公司因为考虑 ...
- git-2.10.2-64-bit介绍&&git下载&&git安装教程
Git介绍 分布式:Git系统是一个分布式的系统,是用来保存工程源代码历史状态的命令行工具. 保存点:Git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目的状态:可以在该保存点将 ...
- 从啥也不会到可以胜任最基本的JavaWeb工作,推荐给新人的学习路线(二)
在上一节中,主要阐述了JavaScript方面的学习路线.先列举一下我朋友的经历,他去过培训机构,说是4个月后月薪过万,虽然他现在还未达到这个指标. 培训机构一般的套路是这样:先教JavaSE,什么都 ...
- Log4net - 项目使用的一个简单Demo
参考页面: http://www.yuanjiaocheng.net/entity/entitytypes.html http://www.yuanjiaocheng.net/entity/entit ...
- Autofac - 属性注入
属性注入不同于通过构造函数方式传入参数. 这里是通过注入的方式, 在类创建完毕之后, 资源释放之前, 给属性赋值. 这里, 我重新弄一些类来演示这一篇吧. public class ClassA { ...
- CSS中强悍的相对单位之em(em-and-elastic-layouts)学习小记
使用相对单位em注意点 1.浏览器默认字体是16px,即1em = 16px,根元素设置如下 html{ font-size: 100%; /* WinIE text resize correctio ...
- Android之使用Bundle进行IPC
一.Bundle进行IPC介绍 四大组件中的三大组件(Activity.Service.Receiver)都是支持在Intent中传递Bundle数据的,由于Bundle实现了Parcelable接口 ...
- uboot环境配置
uboot环境配置 通过配置uboot让它在启动过程中从tftp获取内核和设备树,并从在加载内核之后把通过启动参数将"从nfs挂载根文件系统"传入内核.这个配置主要是通过uboot ...
- .Net中的AOP系列之《单元测试切面》
返回<.Net中的AOP>系列学习总目录 本篇目录 使用NUnit编写测试 编写和运行NUnit测试 切面的测试策略 Castle DynamicProxy测试 测试一个拦截器 注入依赖 ...