Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8901

初心者がVisual Studio で始める Azure Kinect

$
0
0

3D Sensor Advent Calendar 2019の2日目の記事です。

概要

3D センサー歴 3 か月程度の初心者ですが、AzureKinect 手元にあるので、頑張ってみようかと。
目標としては、初心者レベルで Azure Kinect Sensor SDK 使って、接続、動作するところまで試してみたいと思います。

環境

  • windows 10 pro
  • Microsoft Visual Studio Community 2019 Version 16.3.9
  • Microsoft .NET Framework Version 4.8.03752
  • (Azure Kinect Sensor SDK 1.3.0)

環境としては、上記は Visual Studio しかインストールされていない状態で開始します。
NET デスクトップ開発
C++ によるデスクトップ開発
ユニバーサル Windows プラットフォーム開発
上記は適宜チェックをつけてインストールをしておいたほうが良いと思います。(最低限のモジュールまでは調べてないです)

まずは C++ で AzureKinect に接続

  • C++のコンソールアプリで新しいプロジェクトの作成からC++のコンソールアプリを指定

コメント 2019-11-30 194802.png

  • プロジェクト名と配置場所を指定し、空のアプリケーションを作成。

コメント 2019-11-30 195056.png

  • 次の画面で AzureKinectのキーワードで探しパッケージをインストールする。

コメント 2019-11-30 122106.png

  • プロジェクトが作成出来たら、 Azure Kinect の SDK を入れる。入れ方は以下
  1. NuGet で SDK をインストール
  2. AzureKinect Sendor SDK をPCにインストールし、モジュールのパスを通す の二つがあるが、今回は、1のNuGetで取得。「ツール」からNugetパッケージマネージャーの管理でGUIで入れる

コメント 2019-11-30 121841.png

  • 画面が表示される。このHello,World の部分にスクリプトを入れる。

コメント 2019-11-30 195134.png

ConsoleApplication1.cpp
#include <iostream>
#include <k4a/k4a.h>
intmain(){std::cout<<"Hello World!\n";k4a_device_tdevice=NULL;if(K4A_RESULT_SUCCEEDED!=k4a_device_open(K4A_DEVICE_DEFAULT,&device)){"Device open error!\n";return2;}std::cout<<"Opened device";k4a_device_configuration_tconfig=K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;config.camera_fps=K4A_FRAMES_PER_SECOND_30;config.color_format=K4A_IMAGE_FORMAT_COLOR_MJPG;config.color_resolution=K4A_COLOR_RESOLUTION_2160P;config.depth_mode=K4A_DEPTH_MODE_NFOV_UNBINNED;if(K4A_RESULT_SUCCEEDED!=k4a_device_start_cameras(device,&config)){std::cout<<"Failed to start!\n";return3;}else{std::cout<<"Camera started.\n";}k4a_device_stop_cameras(device);std::cout<<"Device stopped.\n";k4a_device_close(device);std::cout<<"Camera closed.\n";}
  • ビルドからソリューションのビルドを実行。

コメント 2019-11-30 200746.png

  • アプリケーションを実行。ディレクトリや実行ファイル名などは適当に読み替えてください。
  • 実行すると以下のような結果となり、無事接続成功。
D:\>"D:\ConsoleApplication1\Debug\ConsoleApplication1.exe"
Hello World!
Opened deviceCamera started.
Device stopped.
Camera closed.

上記で、Visual Studio の C++ で Azure Kinect に接続することができました・・・

って何も動いてないよね

・・・すみません。C++バージョン、コンソールで接続、以外何も見えるものできてません。 C++ の描画ライブラリに手こずって、C++ で動かすところまでいきませんでした。なので、もう一つやります。

改めて C# サンプルを使って AzureKinect で接続、画面に表示できるところまで・・・

コメント 2019-12-01 191649.png

  • Download したら適当なフォルダに展開し、build2019/csharp 配下のサンプルを試す。

コメント 2019-12-01 191910.png

  • とりあえず 1-AquiringImages 下のソリューションファイル(.slnという拡張子)を開く。自分の環境ではセキュリティ警告とターゲットフレームワークがインストールされてませんと出るけどそのままOKを押す。

コメント 2019-12-01 192513.png

  • 忘れないように Azure Kinect Sensor SDK を NuGet でインストールする。
  • リリースにして、ソリューションのビルドを実行する。
  • ちなみに本体プログラムは Mainwindow.xaml.cs なので、詳細を変えたければここを変える。

コメント 2019-12-01 192759.png

  • 正常終了したら bin の中にプロジェクトの名前の実行可能なファイルが作成される。

コメント 2019-12-01 193152.png

  • 上からカラーカメラ取得 、 深度を色で表現したもの 、 色での識別、(4つめのはAzure の Cognitiveサービス使用が必要そうなので今回は割愛)

コメント 2019-12-01 193403.png
コメント 2019-12-01 195217.png
コメント 2019-12-01 195512.png

やっと、何とか表示までできました・・・。

振り返り

  • 今回は、 C++ と C# を初心者でも動かせるように解説したかった。すごい初歩だが、苦戦しながらなんとか完了。
  • でも、 世にある AzureKinect の C++ サンプルは、動作するまでかなり大変そう。(C++知識がないのと、ライブラリが各々違ってコンパイルがなかなかできない)
  • C# の方が描画などは楽かもしれない(でも AzureKinect の C#Sample も少ない)

ということで、次は Unity で頑張ってみます。

明日12/3(火)は @SatoshiGachiFujimotoさんの「PythonでRealSenseD400シリーズ入門」です。Python入門、私も書こうと思ってましたが、他のものにしようかな・・・楽しみにしています。


Viewing all articles
Browse latest Browse all 8901

Trending Articles