从.Net Core 2.0中的WebCam捕获图像

时间:2017-09-05 21:16:48

标签: c# uwp .net-core webcam

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

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

我的第二行调查是NuGet,看看是否有任何第三方图书馆可以完成这项工作。 EmguCV看起来很有希望,但他们似乎还不支持.Net Core。

最后,我搜索了可能完成这项工作的任何内容,并在Windows.Media.Capture中找到了UWP的MediaCapture类,但是我从.Net Core控制台应用程序中引用它并没有成功。看起来您可以从UWP解决方案中引用.Net Core程序集,但我没有找到相反的方法。

请记住,我宁愿将我的项目保留在.Net Core 2.0中,而不是为UWP重写,我正在寻找从WebCam捕获静态图像的任何方法。任何指针都会感激不尽,因为这令人惊讶地令人沮丧。

3 个答案:

答案 0 :(得分:7)

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

它支持.Net核心。

https://github.com/shimat/opencvsharp

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

以下是捕获视频的示例。

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

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

像这样(未尝试过):

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

答案 1 :(得分:0)

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

Windows.Media有微软的api与相机交谈。

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

答案 2 :(得分:0)

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

IK代码使用Azure认知服务执行了许多您可能感兴趣的事情。