问题描述
我在我的网络摄像头项目中尝试了很多依赖项,包括:
但似乎所有这些依赖项都与我的项目不完全兼容。
我当前的项目依赖:
- Microsoft.NETCore.App v3.1
- Microsoft.WindowsDesktop.App.WPF
WPF .NET Core v3.1
是否有任何兼容的网络摄像头依赖项?
解决方法
这些包与 .NET Core 3.1 不兼容。
- WpfWebcamControl (>= .NET Framework 4.6)
- WebcamCapturer.Core (>= .NET Framework 4.7.2)
对于 OpenCV,您可能使用了错误的包,因为它确实与 .NET Core 3.1 兼容。
- OpenCVSharp(.NET 框架)
- OpenCVSharp4(>= .NET Framework 4.6.2,>= .NET Standard 2.0,>= .NET Core 2.1)
- 有关详细信息和软件包的信息,请参阅 see GitHub 和简短教程 here。
请注意,OpenCVSharp4 包是核心包,根据您的用例,您可以改为使用 OpenCvSharp4.Windows 和可选的 OpenCvSharp4.WpfExtensions。有关详细信息,请参阅 the project page GitHub 和 Wiki。
,根据@thatguy 接受的答案分享我是如何做到的
首先,将 OpenCvSharp4.Windows
和 OpenCvSharp4.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;
}
}
}
希望这会有所帮助!