次のソフトウェアがインストールされていることを前提条件とします。インストールのパスが異なる場合は適宜読み替えて下さい。
Visual Studio 2017 Professional/Community を使う場合は、 「C++ によるデスクトップ開発」の「Windows 8.1 SDK と UCRT SDK」オプションをインストールしておく必要があります |
実行ファイルのパス | C:\opencv\bin | <-- 環境変数のPathに追加しておくこと |
インクルードファイルのパス | C:\opencv\include | |
ライブラリのパス | C:\opencv\lib |
インクルードファイルのパス | $(KINECTSDK20_DIR)inc | |
ライブラリのパス | $(KINECTSDK20_DIR)Lib\x64 |
以下の解説で 配布しているプロジェクトは、Visual Studio Community 2017 および OpenCV3.3を用いて作成されたものです。
プログラム中で NtKinect クラスの変数を宣言すると Kinect V2 が初期化されて利用可能になります。
#include "NtKinect.h" ... NtKinect kinect; // 変数宣言
Kinect V2 の色々なセンサは、最初に利用したときに初期化されます。 たとえば RGB カメラは、最初に setRGB() メソッドを呼び出したタイミングで初期化されます。
kinect.setRGB(); // RGB画像を取得する。最初の呼び出しでRGBカメラは初期化される。
Kinect V2 では 1920x1080 の解像度の RGB カメラ画像を取得できます。 OpenCVが BGR フォーマットまたは BGRA フォーマットを基本として用いていることから、 NtKinect では BGRAフォーマットを採用しています。
返り値の型 | メソッド名 | 説明 |
---|---|---|
void | setRGB() | RGB画像を取得し、publicなメンバ変数 rgbImage に設定する。 |
型 | 変数名 | 説明 |
---|---|---|
cv::Mat | rgbImage | RGBカメラの画像。解像度は1920x1080でBGRAフォーマット。 画像の座標は ColorSpace 座標系における位置です。
cv::Vec4b pixel = rgbImage.at<cv::Vec4b>(y,x); piexel[0] // Blue piexel[1] // Green piexel[2] // Red piexel[3] // Alpha |
名前はここでは KinectV2 とします。ソリューション名も自動的に KinectV2 となります。 "OK" を選択します。
Visual Studio のウィドウ上部のメニューバーの中央付近に、コンパイルオプションを指定するウィンドウがありますので "x64" に変更します。また、実行が高速になるように "Debug" を "Release" に変更します。
C++のソースファイルが少くとも1個プロジェクト中に存在しないと、 プロジェクトのプロパティでC/C++という項目が選択できません。 そのため、まずここで main.cpp を追加します。
$(KINECTSDK20_DIR)inc C:\opencv\include
$(KINECTSDK20_DIR)Lib/x64 C:\opencv\lib
Kinect20.lib opencv_world330.lib
上記のリンクから NtKinect.h をダウンロードして下さい。ファイルの置き場所は main.cpp などのソースファイルが置かれているフォルダです。 この例だと KinectV2/KinectV2/NtKinect.h になります。
もしも追加してもincludeできないというエラーが起きる場合は、追加したファイルを 一旦削除してから、「ソリューションエクスプトーラー」の「ヘッダーファイル」を右クリックして メニューの中から「追加」「新しい項目」「VisualC++のヘッダーファイル(.h)」で 「名前」に"NtKinect.h"を指定して下さい。 新たに作成されたファイルにダウンロードしたファイルの内容をコピーして下さい。
赤い文字の部分を書き替えることで、Kinect V2 のいろいろな機能を簡単に利用できます。
main.cpp |
|
ちなみに、 cv:: が付いているのは OpenCV の関数です。
返り値の型 | OpenCV の関数名 | 説明 | マニュアル |
void | imshow(cost string& winname, const Mat& image ) | image をwinname という名前のウィンドウに表示する。 | link |
int | waitKey(int delay =0) | キーの入力をdelay ミリ秒待つ。0は無限を意味する。 | link |
上記のzipファイルには必ずしも最新の NtKinect.h が含まれていない場合があるので、 こちらから最新版をダウンロードして 差し替えてお使い下さい。