使用C#操作摄像头,主要有两种方法:
使用Windows.Media.Capture库
Windows.Media.Capture库是Windows 10中提供的官方摄像头操作库。使用该库,可以直接访问摄像头设备的所有功能,包括拍照、录像、预览等。
使用Windows.Media.Capture库操作摄像头的步骤如下:
获取摄像头设备列表
- // 获取摄像头设备管理器
- var cameraManager = Windows.Media.Devices.MediaDeviceManager.GetDefault();
-
- // 获取摄像头设备列表
- var cameras = cameraManager.GetCameras();
-
打开摄像头
- // 获取要打开的摄像头
- var camera = cameras.FirstOrDefault();
-
- // 打开摄像头
- camera.Open();
-
预览摄像头
- // 获取预览视图
- var preview = camera.GetPreviewView();
-
- // 将预览视图添加到窗体
- this.Controls.Add(preview);
-
拍照
- // 创建拍照请求
- var captureRequest = camera.CreateCaptureRequest();
-
- // 设置拍照参数
- captureRequest.TrySetPreviewFramerateRange(new Range<int>(15, 30));
-
- // 拍照
- camera.Capture(captureRequest);
-
以下是一个使用Windows.Media.Capture库操作摄像头的示例代码:
- using System;
- using System.Windows.Forms;
- using Windows.Media.Devices;
-
- namespace CameraSample
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
-
- private void Button1_Click(object sender, EventArgs e)
- {
- // 获取摄像头设备列表
- var cameras = CameraDeviceManager.GetDefault().GetCameras();
-
- // 获取要打开的摄像头
- var camera = cameras.FirstOrDefault();
-
- // 打开摄像头
- camera.Open();
-
- // 获取预览视图
- var preview = camera.GetPreviewView();
-
- // 将预览视图添加到窗体
- this.Controls.Add(preview);
- }
-
- private void Button2_Click(object sender, EventArgs e)
- {
- // 创建拍照请求
- var captureRequest = camera.CreateCaptureRequest();
-
- // 设置拍照参数
- captureRequest.TrySetPreviewFramerateRange(new Range<int>(15, 30));
-
- // 拍照
- camera.Capture(captureRequest);
- }
- }
- }
-
运行该程序,点击“打开摄像头”按钮,将打开摄像头预览。点击“拍照”按钮,将拍摄一张照片。