在項目中,我們會需要控制uvc攝像頭,采集其實時畫面,或者對其進行旋轉。目前市面上大多數USB攝像頭都支持UVC協議。那么如何采集呢?當然是采用SharpCamera!因為SharpCamera支持對采集的畫面進行旋轉,也可以對采集結果進行亮度、對比度等數十種高級參數進行調整。下面開始演示關鍵代碼,您也可以在文末下載全部源碼:
設置授權
第一步:在引用了SharpCamera.dll之后,調用SharpCamera方法之前,一定要先通過下面代碼來設置授權信息,如果是試用版,直接輸入Test即可。
KeyMgr.SetKey("Test");
獲取CameraMgr的示例
從之前的一篇博文中,我們介紹了一張圖看懂SharpCamera,從那篇文章我們可以看出,SharpCamera通過CameraMgr管理電腦上插入的所有UVC攝像頭。UVC攝像頭可能包含多個,您可以通過CameraMgr提供的方法獲取具體某一個的攝像頭Camera對象,進而進行控制。
//實例化一個CameraMgr
cameraMgr = new CameraMgr();
獲取所有已經安裝的攝像頭
您可以隨時枚舉所有已經安裝的攝像頭。從而方便選擇自己要控制的攝像頭。
//得到當前計算機的所有已安裝攝像頭
List<string> lstCameraNameInstalled = cameraMgr.GetCameraNameList();
選定攝像頭
可以選定一個攝像頭,返回其Camera對象。
//選定該攝像頭
curCamera = cameraMgr.ChooseCamera(name);
綁定事件
為該Camera對象綁定OnVideoFrameCaptrue事件,每當引擎從該攝像頭獲取到一幀圖片,就會提交給該事件的響應方法。
//訂閱幀圖片上報的事件
curCamera.OnVideoFrameCaptrue += VideoFrameCaptrue;
設置采集分辨率
為該Camera對象設置采集時要用的分辨率:
//修改當前分辨率,注意:您設置的分辨率,必須是該攝像頭支持的分辨率,系統支持的分辨率可以通過curCamera.AllSupportedResolution獲取
curCamera.Resolution = new CameraResolution(320, 240);
設置旋轉角度
為該Camera對象設置采集時畫面旋轉角度,比如80,180,270,或不旋轉:
//設置旋轉角度
curCamera.RotateVideo(VideoRotateTypeEnum.Angle90);
打開攝像頭
准備工作做完了,可以打開攝像頭。如下:
//打開該攝像頭
curCamera.Open();
關閉攝像頭
您可以通過下面的代碼關閉攝像頭:
//關掉該攝像頭
curCamera.Close();