Windows 10 IoT Core+WebCam+Azureで簡単定点観測カメラ

Windows 10 IoT Core on Raspberry PI2のWebCam接続が確認できたので、一筆。
PCとUSBで接続可能なWebCamがあれば、定期的に画像を記録する仕掛けは簡単にできますね。しかしそのためにずっとPCを一台動かしているのはなんだか無駄。じゃあRaspberry PI2使おう…しかし、ずっと画像を蓄積続けるためにはストレージが足りないね…ということで、Microsoft AzureのBlob ストレージに貯めよう。そうすればセキュアに遠隔から画像も取り出せるし…

ということで、やり方をざっくり紹介。

まず、Visual Studio 2015で、新規プロジェクトを作成します。テンプレートは、Visual C#→Windows→ユニバーサル→空白のアプリを使います。プロジェクトができたら、MainPage.xamlの<Grid>...</Grid>を

のように、CanvasとCaptureElementタグを追加します。WebCamの画像はいったんこのCaptureElementに割り付けます。

次に、AzureのBlobにアクセスするために、Azure Storage SDKをインストールします。ソリューションエクスプローラーで参照を右クリックして、NuGetパッケージの管理を選択、Azure Storage SDKと検索窓に入力し、表示されたらインストールしてください。

そして、MainPage.xaml.csを開き、

と、MainPageクラスの内容を書き換えます。名前空間が一部足りないのでusing宣言を適宜加えてください。storageAccountNameとstorageAccountKeyは、AzureのポータルでStorageを作成して取得してください。

あとは、Package.appxmanifestをコードで開くで開き(もしソリューションエクスプローラーで開けなければ、メモ帳などで開いてください。)、以下のように<Capability>タグに使用する機能を追加宣言します。

これでOK.すべて完了。15分ごとにAzureのBlobストレージにアップロードします。センサーで計測しながら画像を蓄積しておけば、センサーがある値を記録した時に何が起こっていたかを記録することができるわけです。ちなみにこのコード、ユニバーサルアプリで作っているので、Windows10 の普通のPCでも動きます。WebCam持っている人ぜひお試しを。
※WebCamの中にはWin10IoTCore Raspberry Pi2に対応していない機種もあるのでご注意。

なおこの投稿の詳細な手順は、今後、https://aka.ms/IoTKitHoL にて公開しますんで、ご期待ください。