WPF .NET Core 3.1 网络摄像头

Webcam for WPF .NET Core 3.1

我在我的网络摄像头项目中尝试了很多依赖项,包括:

但似乎所有这些依赖项都与我的项目不完全兼容。

我当前的项目依赖:

WPF .NET Core v3.1是否有任何兼容的网络摄像头依赖项?

这些包与 .NET Core 3.1 不兼容

对于 OpenCV,您可能使用了错误的包,因为它确实与 .NET Core 3.1 兼容。

请注意 OpenCVSharp4 包是核心包,根据您的用例,您可以改用 OpenCvSharp4.Windows 和可选的 OpenCvSharp4.WpfExtensions。请参阅 项目页面 GitHubWiki 了解更多信息。

根据@thatguy 接受的答案分享一下我是如何做到的 首先,将 OpenCvSharp4.WindowsOpenCvSharp4.WpfExtensions 安装到您的 wpf .NET Core 应用程序中。

然后我将 <Image x:Name="image1" Width="400" Height="300" /> 放入我的 xaml 文件中 并使用 WriteableBitmapConverter.ToWriteableBitmap 不断更新我的图片

下面是我的代码

public partial class MainWindow : System.Windows.Window
{
    private System.Timers.Timer MyDataTimer;
    FrameSource frameSource = Cv2.CreateFrameSource_Camera(0);
    public MainWindow()
    {
        InitializeComponent();
        MyDataTimer = new System.Timers.Timer();
        MyDataTimer.Elapsed += new ElapsedEventHandler(MyDataTimer_Elapsed);
        MyDataTimer.Enabled = true;

        MyDataTimer.Interval = 1 * 1;    
        MyDataTimer.Start();
    }
    private void MyDataTimer_Elapsed(object source, ElapsedEventArgs e)
    {

        try
        {
            MyDataTimer.Stop();
            MyDataTimer.Interval = 1 * 1;
            this.Dispatcher.Invoke(new Action(LoadImages));
            MyDataTimer.Start();
        }
        catch (Exception ex)
        {
        }
        finally
        {
            MyDataTimer.Start();
        }
    }
    private void LoadImages()
    {
        using (var mat = new Mat())
        {
            frameSource.NextFrame(mat);

            var wb = WriteableBitmapConverter.ToWriteableBitmap(mat);
            image1.Source = null;
            image1.Source = wb;
        }
    }
}

希望这会有所帮助!