如何解决用于 WPF .NET Core 3.1 的网络摄像头
我在我的网络摄像头项目中尝试了很多依赖项,包括:
但似乎所有这些依赖项都与我的项目不完全兼容。
我当前的项目依赖:
- 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;
}
}
}
希望这会有所帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。