一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C# - C#使用Aforge調(diào)用攝像頭拍照的方法

C#使用Aforge調(diào)用攝像頭拍照的方法

2022-03-01 14:33Jichan·Jong C#

這篇文章主要為大家詳細(xì)介紹了C#使用Aforge調(diào)用攝像頭拍照的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了c#使用aforge調(diào)用攝像頭拍照的具體代碼,供大家參考,具體內(nèi)容如下

一、新建一個winform項目

二、使用nuget添加引用

C#使用Aforge調(diào)用攝像頭拍照的方法

安裝下圖中紅色框住的兩個程序包

C#使用Aforge調(diào)用攝像頭拍照的方法

安裝完后發(fā)現(xiàn)安裝了如下圖的程序包,這是因為上述兩個程序包存在對其它程序包的依賴。

C#使用Aforge調(diào)用攝像頭拍照的方法

三、編寫程序

1.窗體設(shè)計,攝像頭是下拉列表(cmbcamera,控件命名,下同),雖然示例只用到一個攝像頭,但是該demo可用于多個攝像頭間切換場景,分辨率是下拉列表(cmbresolution),列出攝像頭所支持的分辨率,一個videosourceplayer控件(vispshoot),一個picturebox控件(picbpreview)。

C#使用Aforge調(diào)用攝像頭拍照的方法

2.編寫代碼

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using aforge.video.directshow;
 
namespace aforgedemo
{
  public partial class form1 : form
  {
    private filterinfocollection videodevices;
    private videocapturedevice videodevice;
    private videocapabilities[] videocapabilities;
    private videocapabilities[] snapshotcapabilities;
    public form1()
    {
      initializecomponent();
    }
 
    private void form1_load(object sender, eventargs e)
    {
      videodevices = new filterinfocollection(filtercategory.videoinputdevice);
      if (videodevices.count != 0)
      {
        foreach (filterinfo device in videodevices)
        {
          cmbcamera.items.add(device.name);
        }
      }
      else
      {
        cmbcamera.items.add("沒有找到攝像頭");
      }
 
      cmbcamera.selectedindex = 0;
    }
 
    private void cmbcamera_selectedindexchanged(object sender, eventargs e)
    {
      if (videodevices.count != 0)
      {
        videodevice = new videocapturedevice(videodevices[cmbcamera.selectedindex].monikerstring);
        getdeviceresolution(videodevice);
      }
    }
 
    private void getdeviceresolution(videocapturedevice videocapturedevice)
    {
      cmbresolution.items.clear();
      videocapabilities = videocapturedevice.videocapabilities;
      foreach (videocapabilities capabilty in videocapabilities)
      {
        cmbresolution.items.add($"{capabilty.framesize.width} x {capabilty.framesize.height}");
      }
      cmbresolution.selectedindex = 0;
    }
 
    private void btnconnect_click(object sender, eventargs e)
    {
      if (videodevice != null)
      {
        if ((videocapabilities != null) && (videocapabilities.length != 0))
        {
          videodevice.videoresolution = videocapabilities[cmbresolution.selectedindex];
 
          vispshoot.videosource = videodevice;
          vispshoot.start();
          enablecontrolstatus(false);
        }
      }
    }
 
    private void enablecontrolstatus(bool status)
    {
      cmbcamera.enabled = status;
      cmbresolution.enabled = status;
      btnconnect.enabled = status;
      btnshoot.enabled = !status;
      btndisconnect.enabled = !status;
    }
 
    private void btndisconnect_click(object sender, eventargs e)
    {
      disconnect();
      enablecontrolstatus(true);
    }
 
    private void disconnect()
    {
      if (vispshoot.videosource != null)
      {
        vispshoot.signaltostop();
        vispshoot.waitforstop();
        vispshoot.videosource = null;
      }
    }
 
    private void btnshoot_click(object sender, eventargs e)
    {
      bitmap img = vispshoot.getcurrentvideoframe();
      picbpreview.image = img;
    }
 
    private void form1_formclosing(object sender, formclosingeventargs e)
    {
      disconnect();
    }
  }
}

3.測試

C#使用Aforge調(diào)用攝像頭拍照的方法

附上窗體設(shè)計代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
namespace aforgedemo
{
  partial class form1
  {
    /// <summary>
    /// 必需的設(shè)計器變量。
    /// </summary>
    private system.componentmodel.icontainer components = null;
 
    /// <summary>
    /// 清理所有正在使用的資源。
    /// </summary>
    /// <param name="disposing">如果應(yīng)釋放托管資源,為 true;否則為 false。</param>
    protected override void dispose(bool disposing)
    {
      if (disposing && (components != null))
      {
        components.dispose();
      }
      base.dispose(disposing);
    }
 
    #region windows 窗體設(shè)計器生成的代碼
 
    /// <summary>
    /// 設(shè)計器支持所需的方法 - 不要修改
    /// 使用代碼編輯器修改此方法的內(nèi)容。
    /// </summary>
    private void initializecomponent()
    {
      this.label1 = new system.windows.forms.label();
      this.cmbcamera = new system.windows.forms.combobox();
      this.label2 = new system.windows.forms.label();
      this.cmbresolution = new system.windows.forms.combobox();
      this.vispshoot = new aforge.controls.videosourceplayer();
      this.picbpreview = new system.windows.forms.picturebox();
      this.btnconnect = new system.windows.forms.button();
      this.btndisconnect = new system.windows.forms.button();
      this.btnshoot = new system.windows.forms.button();
      ((system.componentmodel.isupportinitialize)(this.picbpreview)).begininit();
      this.suspendlayout();
      //
      // label1
      //
      this.label1.autosize = true;
      this.label1.location = new system.drawing.point(39, 22);
      this.label1.name = "label1";
      this.label1.size = new system.drawing.size(53, 12);
      this.label1.tabindex = 0;
      this.label1.text = "攝像頭:";
      //
      // cmbcamera
      //
      this.cmbcamera.formattingenabled = true;
      this.cmbcamera.location = new system.drawing.point(98, 19);
      this.cmbcamera.name = "cmbcamera";
      this.cmbcamera.size = new system.drawing.size(113, 20);
      this.cmbcamera.tabindex = 1;
      this.cmbcamera.selectedindexchanged += new system.eventhandler(this.cmbcamera_selectedindexchanged);
      //
      // label2
      //
      this.label2.autosize = true;
      this.label2.location = new system.drawing.point(217, 22);
      this.label2.name = "label2";
      this.label2.size = new system.drawing.size(53, 12);
      this.label2.tabindex = 0;
      this.label2.text = "分辨率:";
      //
      // cmbresolution
      //
      this.cmbresolution.formattingenabled = true;
      this.cmbresolution.location = new system.drawing.point(276, 19);
      this.cmbresolution.name = "cmbresolution";
      this.cmbresolution.size = new system.drawing.size(88, 20);
      this.cmbresolution.tabindex = 1;
      //
      // vispshoot
      //
      this.vispshoot.location = new system.drawing.point(41, 54);
      this.vispshoot.name = "vispshoot";
      this.vispshoot.size = new system.drawing.size(591, 332);
      this.vispshoot.tabindex = 2;
      this.vispshoot.text = "videosourceplayer1";
      this.vispshoot.videosource = null;
      //
      // picbpreview
      //
      this.picbpreview.location = new system.drawing.point(41, 423);
      this.picbpreview.name = "picbpreview";
      this.picbpreview.size = new system.drawing.size(180, 175);
      this.picbpreview.sizemode = system.windows.forms.pictureboxsizemode.zoom;
      this.picbpreview.tabindex = 3;
      this.picbpreview.tabstop = false;
      //
      // btnconnect
      //
      this.btnconnect.location = new system.drawing.point(382, 19);
      this.btnconnect.name = "btnconnect";
      this.btnconnect.size = new system.drawing.size(80, 23);
      this.btnconnect.tabindex = 4;
      this.btnconnect.text = "連接";
      this.btnconnect.usevisualstylebackcolor = true;
      this.btnconnect.click += new system.eventhandler(this.btnconnect_click);
      //
      // btndisconnect
      //
      this.btndisconnect.enabled = false;
      this.btndisconnect.location = new system.drawing.point(468, 19);
      this.btndisconnect.name = "btndisconnect";
      this.btndisconnect.size = new system.drawing.size(80, 23);
      this.btndisconnect.tabindex = 4;
      this.btndisconnect.text = "斷開";
      this.btndisconnect.usevisualstylebackcolor = true;
      this.btndisconnect.click += new system.eventhandler(this.btndisconnect_click);
      //
      // btnshoot
      //
      this.btnshoot.enabled = false;
      this.btnshoot.location = new system.drawing.point(552, 19);
      this.btnshoot.name = "btnshoot";
      this.btnshoot.size = new system.drawing.size(80, 23);
      this.btnshoot.tabindex = 4;
      this.btnshoot.text = "拍照";
      this.btnshoot.usevisualstylebackcolor = true;
      this.btnshoot.click += new system.eventhandler(this.btnshoot_click);
      //
      // form1
      //
      this.autoscaledimensions = new system.drawing.sizef(6f, 12f);
      this.autoscalemode = system.windows.forms.autoscalemode.font;
      this.clientsize = new system.drawing.size(677, 610);
      this.controls.add(this.btnshoot);
      this.controls.add(this.btndisconnect);
      this.controls.add(this.btnconnect);
      this.controls.add(this.picbpreview);
      this.controls.add(this.vispshoot);
      this.controls.add(this.cmbresolution);
      this.controls.add(this.cmbcamera);
      this.controls.add(this.label2);
      this.controls.add(this.label1);
      this.name = "form1";
      this.text = "form1";
      this.formclosing += new system.windows.forms.formclosingeventhandler(this.form1_formclosing);
      this.load += new system.eventhandler(this.form1_load);
      ((system.componentmodel.isupportinitialize)(this.picbpreview)).endinit();
      this.resumelayout(false);
      this.performlayout();
 
    }
 
    #endregion
 
    private system.windows.forms.label label1;
    private system.windows.forms.combobox cmbcamera;
    private system.windows.forms.label label2;
    private system.windows.forms.combobox cmbresolution;
    private aforge.controls.videosourceplayer vispshoot;
    private system.windows.forms.picturebox picbpreview;
    private system.windows.forms.button btnconnect;
    private system.windows.forms.button btndisconnect;
    private system.windows.forms.button btnshoot;
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/godbell/archive/2018/10/01/9734443.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 18videossex性欧美69| 京东热在线观看 | 国产偷窥女洗浴在线观看亚洲 | 国产久视频| 东北美女野外bbwbbw免费 | 日韩成人一区ftp在线播放 | 热99精品 | 国产精品国产色综合色 | 免费网站直接进入 | 韩国免费视频 | 亚州在线播放 | 日本孕妇与黑人xxxxxx | 日本人和黑人一级纶理片 | 亲爱的客栈第二季免费观看完整版 | 亚洲AV无码国产精品色在线看 | 高清一区高清二区视频 | 亚洲欧美日韩久久一区 | 欧美日韩亚洲综合久久久 | 无颜之月5集全免费看无删除 | 美女张开双腿让男人捅 | aaaa黄色片 | 国产在线观看色 | 亚洲妇熟xxxxx妇色黄 | 国产成人在线综合 | 俄罗斯处女 | 日本啊v在线观看 | 欧美brazzers | 亚洲第五色综合网啪啪 | 国产综合亚洲欧美日韩一区二区 | 亚洲日本中文字幕在线2022 | 大肥婆丰满大肥奶bbw肥 | 免费看男女做好爽好硬视频 | 国产乱叫456在线 | 很黄的孕妇a级黄毛片 | 日本网络视频www色高清免费 | 精品一区视频 | 亚洲欧美日韩国产综合专区 | 婷婷色婷婷 | 国产精品男人的天堂 | 日韩一区二区三区精品 | 欧美午夜精品久久久久久黑人 |