轉(zhuǎn)帖|使用教程|編輯:龔雪|2021-10-22 09:53:20.843|閱讀 334 次
概述:本文主要介紹如何使用DevExpress CameraControl控件進(jìn)行攝像頭圖像采集,歡迎下載最新的版本體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在以前的項(xiàng)目中,做攝像頭的圖片采集,我們一般還是需要做一個(gè)封裝處理的,在較新版本的DevExpress控件里面,增加了一個(gè)CameraControl控件,可以直接調(diào)用攝像頭顯示的,因此也可以做頭像采集等功能,本文介紹如何基于這個(gè)控件做相關(guān)的圖像采集操作。
該控件從15.1開始,就開始加入控件組了,控件的使用很簡(jiǎn)單,直接拖動(dòng)到界面就可以在WinForm界面上使用了。本案例基于16.1進(jìn)行開發(fā)的,因此也都具有這些控件模塊的。
例如我們直接把CameraControl控件拖動(dòng)到界面上,然后運(yùn)行界面就可以看到如下效果。
在攝像的界面上,有一個(gè)配置的選項(xiàng),可以對(duì)攝像頭的分辨率等參數(shù)進(jìn)行設(shè)置處理。
同時(shí)在PictureEdit控件上,也可以開啟攝像頭采集功能,只需要在控件屬性里設(shè)置一下即可:
運(yùn)行界面得到效果如下所示。
這個(gè)采集圖片的菜單項(xiàng)文字沒有漢化,因此有點(diǎn)怪異,我們也可以通過(guò)使用其內(nèi)置的對(duì)話框(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)用得到的對(duì)話框是內(nèi)置的,界面也是無(wú)法修改調(diào)整,包括文字內(nèi)容。
為了更好的實(shí)現(xiàn)對(duì)頭像的采集操作,我們可以仿照這個(gè)對(duì)話框模塊,做一個(gè)自定義的窗體,實(shí)現(xiàn)攝像頭圖像的采集操作,如下所示。
同時(shí)我們?cè)趯?duì)話框窗體里面設(shè)置一個(gè)Public的圖像對(duì)象屬性,如下所示:
/// <summary> /// 采集圖片 /// </summary> public Image CameraImage { get; set; }
這樣我們就方便設(shè)置和提取圖像信息了。
捕獲圖像的代碼就是從攝像控件里面獲取一個(gè)快照就可以了,如下所示。
private void btnCapture_Click(object sender, EventArgs e) { this.CameraImage = this.cameraControl1.TakeSnapshot(); this.pictureEdit1.Image = this.CameraImage; }
然后在窗體退出的時(shí)候,記得釋放攝像頭的資源,否則第二次就提示占用,無(wú)法使用了。
private void FrmCamera_FormClosing(object sender, FormClosingEventArgs e) { this.cameraControl1.Dispose(); }
整個(gè)對(duì)話框的完整代碼如下所示。
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)行可以得到界面如下所示。
這種處理方式比較好,我在該控件出來(lái)之前,在基礎(chǔ)界面類庫(kù)里面,使用肖像控件來(lái)處理攝像頭圖像采集的。
例如在會(huì)員管理系統(tǒng)里面,就是利用肖像管理控件,通過(guò)之前的攝像頭公用類庫(kù)實(shí)現(xiàn)的圖形采集操作的。
這里其實(shí)是利用一個(gè)攝像頭類庫(kù)來(lái)實(shí)現(xiàn)的,不過(guò)現(xiàn)在既然DevExpress本身就提供控件支持,那么我們也可以直接利用它了,這樣更加方便,更少代碼。
DevExpress WinForm擁有180+組件和UI庫(kù),能為Windows Forms平臺(tái)創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無(wú)論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
本文轉(zhuǎn)載自:
DevExpress技術(shù)交流群5:742234706 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: