在 .Net Core 2.0 中从网络摄像头捕获图像

Capturing image from WebCam in .Net Core 2.0

我正在 Raspberry Pi 上 运行 在 .Net Core 2.0 中开发应用程序,即 运行ning Win 10 IoT。 Pi 连接了一个 USB 网络摄像头,我想从相机中捕捉静止图像。不幸的是,至少可以说这有点麻烦。

首先,我通过 .Net Core 2.0 库进行了很好的搜索,看看是否有任何东西可以提供此功能,但没有任何运气。

我的第二个查询是 NuGet,看看是否有任何第三方库可以完成这项工作。 EmguCV 有一段时间看起来很有前途,但他们似乎还不支持 .Net Core。

最后我用谷歌搜索了任何可能完成这项工作的东西,并在 Windows.Media.Capture 中找到了适用于 UWP 的 MediaCapture class,但我没有成功从我的 .Net Core 控制台应用程序中引用它.您似乎可以从 UWP 解决方案中引用 .Net Core 程序集,但我还没有找到相反的方法。

请记住,我更愿意将我的项目保留在 .Net Core 2.0 中,而不是为 UWP 重新编写,我正在寻找从网络摄像头捕获静止图像的任何方法。我们将不胜感激地收到任何指示,因为事实证明这令人非常沮丧。

实际上对于捕获图像和其他图像处理活动,可能您可以尝试 OpenCvSharp

它支持.Net 核心。

https://github.com/shimat/opencvsharp

Nuget 包 可用(在上面 link 中查找更多详细信息)。

这里是一个捕获视频的例子。

https://github.com/shimat/opencvsharp/wiki/%5BCpp%5D-Capturing-Video

如果您将 0(零)作为输入传递给 VideoCapture,它应该会打开默认相机。

像这样(没试过):

VideoCapture capture = new VideoCapture(0); //assumption based on how actual openCV works.

您可以在任何点网应用程序(核心、框架、标准)上引用通用 windows 应用程序的核心库(Windows.Media.winmd、Windows.Security.winmd 等)。我已经做了。但是,'await' 将一团糟,因此您将不得不解决使用 await 和 async 的问题(即手动等待任务)。

Windows.Media 有微软的 api 可以对着摄像头说话。

我不确定通用应用程序是否适用于 Raspberry Pi 你。

由于您在 Raspberry 上使用 Win 10 IoT,请尝试使用 Microsoft Git 中提供的 "Intelligent Kiosk" 示例程序。它提供了一个 UWP 应用程序(源代码),它具有良好的相机控制和更多自定义选项。这是 C#。如果你想要 VB 版本,你可以 ping 我。

IK 代码使用您可能感兴趣的 Azure 认知服务做更多事情。