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

Posted

技术标签:

【中文标题】在 .Net Core 2.0 中从网络摄像头捕获图像【英文标题】:Capturing image from WebCam in .Net Core 2.0 【发布时间】:2018-02-14 06:01:55 【问题描述】:

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

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

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

最后,我在谷歌上搜索了任何可能完成这项工作的内容,并在 UWP 的 Windows.Media.Capture 中发现了 MediaCapture 类,但我没有成功从我的 .Net Core 控制台应用程序中引用它。您似乎可以从 UWP 解决方案中引用 .Net Core 程序集,但我还没有找到另一种方法。

考虑到我更愿意将我的项目保留在 .Net Core 2.0 中,而不是为 UWP 重写,我正在寻找任何从网络摄像头捕获静止图像的方法。任何指点都将不胜感激,因为事实证明这令人惊讶地令人沮丧。

【问题讨论】:

【参考方案1】:

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

它支持.Net核心。

https://github.com/shimat/opencvsharp

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

这是一个捕获视频的示例。

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

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

类似的东西(没试过):

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

【讨论】:

Naidu & @Pete:我正在努力让 OpenCvSharp 在 Mac 上加载 OpenCvSharpExtern。您是在跨平台环境中运行还是仅在 Windows 环境中运行? @WojtekTurowicz 我猜你已经解决了这个问题,但是有一个 nuget 包可以将所有必需的 dll 添加到你的项目中以用于特定的运行时。我必须添加 Windows 运行时包才能让 OpenCvSharp 在我的 PC 上运行【参考方案2】:

您可以在任何点网应用程序(核心、框架、标准)上引用通用 Windows 应用程序的核心库(Windows.Media.winmd、Windows.Security.winmd 等...)。我已经做了。但是,'await' 将全部搞砸,因此您将不得不处理使用 await 和 async 的工作(即手动等待任务)。

Windows.Media 有 Microsoft 的 api 与摄像头对话。

我不确定通用应用程序是否可以在 Raspberry Pi 上运行。

【讨论】:

【参考方案3】:

由于您在 Raspberry 上使用 Win 10 IoT,请尝试使用 Microsoft 在 Git 中提供的“智能信息亭”示例程序。它提供了一个 UWP 应用程序(源代码),该应用程序具有良好的相机控制和更多自定义选项。这是 C#。需要VB版的可以ping我。

IK 代码使用您可能感兴趣的 Azure 认知服务执行更多操作。

【讨论】:

以上是关于在 .Net Core 2.0 中从网络摄像头捕获图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net core v 2.0 中从 javascript 调用 PageModel 方法

在 Web 应用程序中从网络摄像头或移动摄像头拍照

无法在 OpenCV 2.4.7 中从摄像头捕获视频

VoIP:如何在 Qt 多媒体中从摄像头捕获实时音频/视频流字节?

以高分辨率从网络摄像头捕获图片,同时使用 DirectShow.Net 以较低的分辨率进行预览

.Net Core 2.0 中的 SwashBuckle UI 显示错误