在我們以前的項目了,做攝像頭的圖片采集,我們一般還是需要做一個封裝處理的听系,在較新版本的DevExpress控件里面,增加了一個CameraControl控件虹菲,可以直接調(diào)用攝像頭顯示的靠胜,因此也可以做頭像采集等功能,本文介紹如何基于這個控件做相關(guān)的圖像采集操作届惋。
1髓帽、CameraControl控件介紹
該控件從15.1開始,就開始加入控件組了脑豹,控件的使用很簡單郑藏,直接拖動到界面就可以在Winform界面上使用了。本案例基于16.1進(jìn)行開發(fā)的瘩欺,因此也都具有這些控件模塊的必盖。
例如我們直接把CameraControl控件拖動到界面上,然后運(yùn)行界面就可以看到如下效果俱饿。
在攝像的界面上歌粥,有一個配置的選項,可以對攝像頭的分辨率等參數(shù)進(jìn)行設(shè)置處理拍埠。
同時在PictureEdit控件上失驶,也可以開啟攝像頭采集功能,只需要在控件屬性里設(shè)置一下即可:
運(yùn)行界面得到效果如下所示枣购。
這個采集圖片的菜單項文字沒有漢化嬉探,因此有點(diǎn)怪異擦耀,我們也可以通過使用其內(nèi)置的對話框(**TakePictureDialog **)進(jìn)行圖片采集操作。
具體代碼如下所示:
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;
}
}
調(diào)用得到的對話框是內(nèi)置的涩堤,界面也是無法修改調(diào)整眷蜓,包括文字內(nèi)容。
2胎围、自定義采集對話框
為了更好的實(shí)現(xiàn)對頭像的采集操作吁系,我們可以仿照這個對話框模塊,做一個自定義的窗體白魂,實(shí)現(xiàn)攝像頭圖像的采集操作汽纤,如下所示。
同時我們在對話框窗體里面設(shè)置一個Public的圖像對象屬性福荸,如下所示
/// <summary>
/// 采集圖片
/// </summary>
public Image CameraImage { get; set; }
這樣我們就方便設(shè)置和提取圖像信息了冒版。
捕獲圖像的代碼就是從攝像控件里面獲取一個快照就可以了,如下所示逞姿。
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();
}
}
最后運(yùn)行可以得到界面如下所示谒养。
這種處理方式比較好挺狰,我在該控件出來之前,在基礎(chǔ)界面類庫里面买窟,使用肖像控件來處理攝像頭圖像采集的丰泊,如在我博客介紹《Winform開發(fā)框架之肖像顯示保存控件的實(shí)現(xiàn)》所示。
例如在會員管理系統(tǒng)里面始绍,就是利用肖像管理控件瞳购,通過之前的攝像頭公用類庫實(shí)現(xiàn)的圖形采集操作的。
這里其實(shí)是利用一個攝像頭類庫來實(shí)現(xiàn)的亏推,不過現(xiàn)在既然DevExpress本身就提供控件支持学赛,那么我們也可以直接利用它了,這樣更加方便吞杭,更少代碼盏浇。