c# 获取摄像头代码

该代码示例展示了如何在C#中使用WPF和System.Windows.Media命名空间来获取和显示摄像头的实时视频流。通过CaptureSource、VideoCaptureDevice和VideoBrush类,可以启动和停止摄像头,并将视频流显示在WPF应用的Grid背景中。
摘要由CSDN通过智能技术生成

在C#中,你可以使用`System.Windows.Media.Capture`命名空间来实现获取摄像头的代码。以下是一个简单的示例代码,演示了如何获取摄像头并显示实时视频流:

```csharp
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Threading;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Media.Effects;
using System.Linq;
using System.IO;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Windows.Threading;

namespace CameraApp
{
    public partial class MainWindow : Window
    {
        private CaptureSource captureSource;
        private VideoCaptureDevice videoCaptureDevice;
        private VideoBrush videoBrush;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void StartCamera()
        {
            if (CaptureDeviceConfiguration.AllowedDeviceAccess || CaptureDeviceConfiguration.RequestDeviceAccess())
            {
                videoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
                captureSource = new CaptureSource();
                captureSource.VideoCaptureDevice = videoCaptureDevice;
                videoBrush = new VideoBrush();
                videoBrush.SetSource(captureSource);
                captureScreen.Fill = videoBrush;
                captureSource.Start();
            }
        }

        private void StopCamera()
        {
            if (captureSource != null && captureSource.State == CaptureState.Started)
            {
                captureSource.Stop();
                captureSource = null;
                videoCaptureDevice = null;
                videoBrush = null;
            }
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            StartCamera();
        }

        private void Window_Closing(object sender, CancelEventArgs e)
        {
            StopCamera();
        }
    }
}
```

在这个示例中,`MainWindow`是一个WPF窗口,通过`CaptureSource`、`VideoCaptureDevice`、`VideoBrush`等类来实现摄像头的调用和显示。`StartCamera`函数用于开始获取摄像头视频流,`StopCamera`函数用于停止获取摄像头视频流。你可以在`Window_Loaded`事件中调用`StartCamera`函数来开始获取摄像头视频流,在`Window_Closing`事件中调用`StopCamera`函数来停止获取摄像头视频流。

当摄像头视频流被设置为`VideoBrush`后,你可以将`VideoBrush`应用到任何WPF控件的背景中,以显示摄像头实时视频。在这个示例中,我们将`VideoBrush`应用到了名为`captureScreen`的`Grid`的背景中。

请注意,你需要在项目中添加对`PresentationCore`和`System.Windows.Media`程序集的引用,以使用上述命名空间和类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值