Win 10 IoTを実行しているRaspberry Piで実行するために、.Net Core 2.0でアプリを開発しています。 PiにはUSB WebCamが接続されており、カメラから静止画像をキャプチャしようとしています。残念ながら、控えめに言っても、これはやや面倒です。
まず、.Net Core 2.0ライブラリを調べて、この機能を提供するものがあるかどうかを確認しましたが、うまくいきませんでした。
私の2番目の問い合わせ行はNuGetで、サードパーティのライブラリがその仕事をする可能性があるかどうかを確認しました。 EmguCVはしばらくの間有望に見えましたが、.Net Coreをまだサポートしていないようです。
最後に、この仕事をする可能性のあるものを探して、UWPのWindows.Media.CaptureのMediaCaptureクラスに出会いましたが、.Net Coreコンソールアプリからこれを参照することに成功していません。 UWPソリューションから.Net Coreアセンブリを参照できるようですが、他の方法でそれを行う方法が見つかりません。
プロジェクトを.Net Core 2.0で保持したいので、UWP用に書き直すのではなく、WebCamから静止画像をキャプチャする方法を探しています。これは驚くほど苛立たしいことが証明されているので、どんなポインタも感謝して受け取られます。
実際に画像や他の画像処理アクティビティをキャプチャするために、おそらくOpenCvSharpを試すことができます。
.Netコアをサポートしています。
https://github.com/shimat/opencvsharp
Nugetパッケージが利用可能です(上記のリンクで詳細を確認してください)。
これはビデオをキャプチャする例です。
https://github.com/shimat/opencvsharp/wiki/%5BCpp%5D-Capturing-Video
VideoCapture
への入力として0(ゼロ)を渡すと、デフォルトのカメラが開きます。
このようなもの(試していない):
VideoCapture capture = new VideoCapture(0); //assumption based on how actual openCV works.
RaspberryでWin 10 IoTを使用しているので、MicrosoftによってGitで入手可能な「Intelligent Kiosk」サンプルプログラムを使用してみてください。それは、カスタマイズするためのより多くのオプションを備えた優れたカメラ制御を備えたUWPアプリ(ソースコード)を提供します。これはC#です。 VBバージョンが必要な場合は、pingを実行できます。
IKコードは、Azure Cognitiveサービスを使用してさらに多くのことを行います。
ドットネットアプリケーション(コア、フレームワーク、標準)でユニバーサルWindowsアプリのコアライブラリ(Windows.Media.winmd、Windows.Security.winmdなど)を参照できます。私はそれをやった。ただし、「await」はすべて混乱するため、awaitとasyncを使用する(つまり、手動でタスクを待機する)には、回避策を講じる必要があります。
Windows.Mediaには、カメラと通信するためのMicrosoftのAPIがあります。
ユニバーサルアプリがRaspberry Piで動作するかどうかはわかりません。