C#使用AForge连接摄像头并且拍照

AForge连接摄像头

引入相关AForge库。

C#使用AForge连接摄像头并且拍照_第1张图片
在工具箱引入controls里的控件。

绘图

其中视频框使用videoSourcePlayer控件。照片使用pictureBox控件。
C#使用AForge连接摄像头并且拍照_第2张图片

编辑代码

这里有三个需要掌握的类或成员

public FilterInfoCollection(System.Guid category)
AForge.Video.DirectShow.FilterInfoCollection 的成员
摘要:
Initializes a new instance of the AForge.Video.DirectShow.FilterInfoCollection class.
参数:
category: Guid of DirectShow filter category. See AForge.Video.DirectShow.FilterCategory.
注解:
Build collection of filters' information objects for the specified filter category.
public VideoCaptureDevice(string deviceMoniker)
    AForge.Video.DirectShow.VideoCaptureDevice 的成员

摘要:
Initializes a new instance of the AForge.Video.DirectShow.VideoCaptureDevice class.
参数:
deviceMoniker: Moniker string of video capture device.
public AForge.Video.DirectShow.VideoCapabilities[] VideoCapabilities { get; }
    AForge.Video.DirectShow.VideoCaptureDevice 的成员

摘要:
Video capabilities of the device.
注解:
The property provides list of device's video capabilities.
It is recomended not to call this property immediately after AForge.Video.DirectShow.VideoCaptureDevice.Start method, since device may not start yet and provide its information. It is better to call the property before starting device or a bit after (but not immediately after).
VideoCapabilities[]这个属性会返回摄像头支持哪些配置,并把这些配置存放在成员组里。

接下来是常用的方法:

FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
可以获取摄像头列表
此时参数videoDevices.Count返回设备数。
FilterInfo device可以定义设备变量来遍历videoDevices设备列表。

VideoCaptureDevice Camera = new VideoCaptureDevice(videoDevices[0].MonikerString);
可以实例化设备控制类,参数从上方的设备列表选,这里是第一个。
分辨率获取:Camera.VideoCapabilities[0].FrameSize.Width
		   Camera.VideoCapabilities[0].FrameSize.Height
videoSourcePlayer有个属性VideoSource是用来选择设备的。
可以先选择好用哪个设备,再设置相关属性,最后将Camera(本例)赋值给VideoSource。
Camera.start();开启设备。
Camera.Stop();断开设备
最后VideoSource=NULL;
Bitmap img = videoSourcePlayer1.GetCurrentVideoFrame();
可以拍照。
PictureBox.Image可以获取或设置所显示的图像。
pictureBox1.Image = img;在PictureBox控件内显示照片。

你可能感兴趣的:(c#)