NtKinect: Kinect V2 C++ Programming with OpenCV on Windows10

Kinect V2 で 赤外線 (Infrared) 画像を取得する


2016.07.20: created by
Japanese English
目次へ

前提として理解しておくべき知識


Infrared 画像

Depth画像と同じく 512x424 の解像度で Infrared (赤外線)画像を取得することができます。

得られたInfrared画像はピクセル毎に UINT16 で表現されます。

NtKinect

NtKinect の Infrared 画像に関するメソッド

返り値の型 メソッド名 説明
void setInfrared() メンバ変数 infraredImage に Infrared 画像をセットする。
NtKinect

NtKinect の Infrared 画像に関するメンバ変数

変数名 説明
cv::Mat infraredImage Infrared 画像。 512x424の大きさで、各ピクセルは UINT16 で表現されます。
画像の座標は DepthSpace 座標系における位置です。
  • infraredImage.cols --- 画像の横方向の解像度 (512)
  • infraredImage.rows --- 画像の縦方向の解像度 (424)
  • infraredImage.at<UINT16>(y , x ) --- 画像の (x , y ) 座標の画素にアクセスする
  •         UINT16 infrared = rgbImage.at<UINT16>(y , x );
    

プログラム作成の手順

  1. NtKinect: Kinect V2 でRGBカメラ画像を取得する(基本設定)」 の Visual Studio のプロジェクト KinectV2.zipを用いて作成します。
  2. main.cppの内容を以下のように変更します。
  3. kinect.setInfrared()メソッドを呼び出して kinect.infraredImage に赤外線画像データを設定します。

    main.cpp
    #include <iostream>
    #include <sstream>
    
    #include "NtKinect.h"
    
    using namespace std;
    
    void doJob() {
      NtKinect kinect;
      while (1) {
        kinect.setInfrared();
        cv::imshow("infrared", kinect.infraredImage);
        auto key = cv::waitKey(1);
        if (key == 'q') break;
      }
      cv::destroyAllWindows();
    }
    
    int main(int argc, char** argv) {
      try {
        doJob();
      } catch (exception &ex) {
        cout << ex.what() << endl;
        string s;
        cin >> s;
      }
      return 0;
    }
    
  4. プログラムを実行すると赤外線画像が表示されます。'q' キーで終了します。



  5. サンプルのプロジェクトはこちら KinectV2_infrared.zip
  6. 上記のzipファイルには必ずしも最新の NtKinect.h が含まれていない場合があるので、 こちらから最新版をダウンロードして 差し替えてお使い下さい。



http://nw.tsuda.ac.jp/