10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

3D SensorAdvent Calendar 2019

Day 2

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

Last updated at Posted at 2019-12-01

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>

int main()
{
    std::cout << "Hello World!\n";

	k4a_device_t device = NULL;

	if (K4A_RESULT_SUCCEEDED != k4a_device_open(K4A_DEVICE_DEFAULT, &device))
	{
		"Device open error!\n";
		return 2;
	}

	std::cout << "Opened device";

	k4a_device_configuration_t config = 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";
		return 3;
	}
	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入門、私も書こうと思ってましたが、他のものにしようかな・・・楽しみにしています。

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?