DevExpress控件可以進行攝像頭圖像採集,你知道嗎?

在以前的項目中,做攝像頭的圖片採集,我們一般還是需要做一個封裝處理的,在較新版本的DevExpress控件裏面,增加了一個CameraControl控件,可以直接調用攝像頭顯示的,因此也可以做頭像採集等功能,本文介紹如何基於這個控件做相關的圖像採集操作。

一、CameraControl控件介紹

該控件從15.1開始,就開始加入控件組了,控件的使用很簡單,直接拖動到界面就可以在WinForm界面上使用了。本案例基於16.1進行開發的,因此也都具有這些控件模塊的。

例如我們直接把CameraControl控件拖動到界面上,然後運行界面就可以看到如下效果。

DevExpress CameraControl控件使用-圖1

在攝像的界面上,有一個配置的選項,可以對攝像頭的分辨率等參數進行設置處理。

DevExpress CameraControl控件使用-圖2

同時在PictureEdit控件上,也可以開啓攝像頭採集功能,只需要在控件屬性裏設置一下即可:

DevExpress CameraControl控件使用-圖3

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

DevExpress CameraControl控件使用-圖4

這個採集圖片的菜單項文字沒有漢化,因此有點怪異,我們也可以通過使用其內置的對話框(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;
}
}

調用得到的對話框是內置的,界面也是無法修改調整,包括文字內容。

DevExpress CameraControl控件使用-圖5

二、自定義採集對話框

爲了更好的實現對頭像的採集操作,我們可以仿照這個對話框模塊,做一個自定義的窗體,實現攝像頭圖像的採集操作,如下所示。

DevExpress CameraControl控件使用-圖6

同時我們在對話框窗體裏面設置一個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();
}
}

最後運行可以得到界面如下所示。

DevExpress CameraControl控件使用-圖7

這種處理方式比較好,我在該控件出來之前,在基礎界面類庫裏面,使用肖像控件來處理攝像頭圖像採集的。

DevExpress CameraControl控件使用-圖8

例如在會員管理系統裏面,就是利用肖像管理控件,通過之前的攝像頭公用類庫實現的圖形採集操作的。

DevExpress CameraControl控件使用-圖9

這裏其實是利用一個攝像頭類庫來實現的,不過現在既然DevExpress本身就提供控件支持,那麼我們也可以直接利用它了,這樣更加方便,更少代碼。

DevExpress WinForm控件| 下載試用

DevExpress WinForm擁有180+組件和UI庫,能爲Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易於使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕鬆勝任!

本文轉載自:博客園 - 伍華聰


DevExpress技術交流羣5:742234706      歡迎一起進羣討論

更多DevExpress線上公開課、中文教程資訊請上中文網獲取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章