C 實現呼叫本機攝像頭例項

2022-10-03 13:09:11 字數 1774 閱讀 4871

硬體環境:聯想c360一體機,自帶攝像頭

編寫環境:vs2010

語言:c# wpf

實現步驟:

**aforge類庫,並新增引用:

using aforge;

using aforge.controls;

using aforge.video;

using aforge.video.direc程式設計客棧tshow;

using size = system.drawing.size;

在xaml介面中新增videosourceplayer控制項,此次稍微解釋如何新增外來控制項:

在工具箱中新增新的選項卡,右鍵新增選擇項,瀏覽選擇控制項dll確定,引用控制項即可新增到工具箱中。

列舉所有的攝像頭:

filterinfocollection videodevices;

videodevices = new filterinfocollection(filtercategory.videoinputdevice);

foreach (filterinfo device in videodevices)

連線攝像頭:

宣告:fileterinfo info;

info = videodevices[0];//選取第乙個,此處可作靈活改動

videocapturedevice videosource = new videocapturedevice(videodevices[info.monikerstring);

videosource.desiredframesize = new system.drawing.size(214, 281);

videosource.desiredframerate = 1;

videosourceplayer.videosource = videosource;

videosourceplayer.start();

關閉攝像頭:

videosourceplayer.signaltostop();

videosourceplayer.waitforstop();

拍照:if (videosourceplayer.isrunning)

using (stream stream = file.create(picname))

}專案中要求是攝像頭處於監控狀態,拍照後畫面固定儲存,不滿意可以清空再次進行拍照,直到滿意為止。

做法是在videosourceplayer的上面新增乙個image控制項,因為專案是wpf做的www.cppcns.com,所有**顯示只能新增image控制項,有兩點需要注意:

1)wpf引用winform控制項需要使用windowsformshost控制項,所以監控**和**顯示時是控制項windowsformshost和image控制項的顯示和隱藏,此處走了一段彎路所以記錄下來。

2)image控制項的source已經繫結,但是**需要清空刪除該照程式設計客棧片資源,系統提示的大致意思是資源已經被占用無法刪除。解決途徑:

宣告:bitmapimage bmi = new system.windows.media.imaging.bitmapimage();

使用時:

bmi.bgeininit();

bmi.urisource = new uri(picname);

bmi.cacheoption = bitmapcacheoption.onload;

bmi.endinit();

繫結:this.image.source = bmi;

本文標題: c#實現呼叫本機攝像頭例項

本文位址:

c 攝像頭程式設計例項

這是乙個關於設想頭的類 using system using system.runtime.interopservices namespace webcam structlayout layoutkind.sequential public struct bitmapinfoheader struc...

實現asp程式呼叫攝像頭並控制攝像頭進行拍照

這幾天好多人問我如何在asp程式中控制攝像頭去抓拍 asp技術還是99年的時候看過一點點,早就著公尺飯吃了,不過既然有人問,那就是看得起咱,花了乙個晚上的時間把asp程式呼叫攝像頭拍照的問題搞定了,現記錄如下,讓有類似需求的同學可以少走些彎路。用到的技術 1.asp程式中作base64編碼和解碼,使...

Android 呼叫攝像頭

androidmanifest新增許可權 intent呼叫開啟照相機 intent intent new intent mediastore.action image capture file file new file environment.getexternalstoragedirectory...