Point Cloud Libraryのビューワーでkinectのデータを表示
Windows10で実行。
Point Cloud Libraryのインストールと設定 - kubotti’s memo
でPATH等は、設定済み。
Visual Studio 2013
Visual C++ > Win32 > Win32 Console Application
PclViewSample1
という名前でプロジェクト作成。
作成時のダイアログ(ウィザード)は、デフォルトのまま。
ネット上のどこかから取得したソースをコピペ。
// Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" // Disable Error C4996 that occur when using Boost.Signals2. #ifdef _DEBUG #define _SCL_SECURE_NO_WARNINGS #endif #include "kinect2_grabber.h" #include <pcl/visualization/cloud_viewer.h> int _tmain( int argc, _TCHAR* argv[] ) { // Create Cloud Viewer pcl::visualization::CloudViewer viewer( "Point Cloud Viewer" ); // Callback Function to be called when Updating Data boost::function<void( const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr& )> function = [&viewer]( const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr &cloud ){ if( !viewer.wasStopped() ){ viewer.showCloud( cloud ); } }; // Create Kinect2Grabber pcl::Grabber* grabber = new pcl::Kinect2Grabber(); // Regist Callback Function grabber->registerCallback( function ); // Start Retrieve Data grabber->start(); while( !viewer.wasStopped() ){ // Input Key ( Exit ESC key ) if( GetKeyState( VK_ESCAPE ) < 0 ){ break; } } // Stop Retrieve Data grabber->stop(); return 0; }
kinect2_grabber.h
KinectGrabber/kinect2_grabber.h at Kinect2Grabber · UnaNancyOwen/KinectGrabber · GitHub
kinect2_grabber.h
というファイルを
Projects\PclViewSample1\PclViewSample1
にコピー。
Solution ExplorerでHeader Filesを右クリック、
Add > Existing Item...
kinect2_grabber.h を追加。
kinect.h
Kinect for Windows SDK v2.0 で開発する環境を整える(C++編) - Natural Software
環境変数を確認したら、
KINECTSDK20_DIR
C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\
という値があった。
たぶん、Kinect SDKをインストールしたときに設定されたのだと思う。
構成の設定
Solution Explorerで、PclViewerSample1(プロジェクト名)を右クリック。
Release Property Pagesの
Configuration: で、All Configurations を選択。
Configuration Properties > C/C++ > General > Additional Include Directories
で、
$(KINECTSDK20_DIR)\inc
を追加。
Configuration Properties > Linker > General > Additional Library Directories
で、
$(KINECTSDK20_DIR)\lib\x64
を追加。
Configuration Properties > Linker > Input > Additional Dependencies
で、
Kinect20.lib
を追加。
エラーその1
Error 2 error LNK2001: unresolved external symbol GetDefaultKinectSensor c:\Users\aaaaaa\documents\visual studio 2013\Projects\PclViewSample1\PclViewSample1\PclViewSample1.obj PclViewSample1 Error 3 error LNK1120: 1 unresolved externals c:\users\aaaaaa\documents\visual studio 2013\Projects\PclViewSample1\x64\Release\PclViewSample1.exe PclViewSample1
原因は、上記の
Kinect20.lib
の追加をしていなかったからのようだった。
実行
========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
ビルドに成功して、深度データ付きの画像が表示された。
実行直後は3色の正しく動いていない風な画面が表示される。
これをマウスホイールとマウスドラッグで動かすと3次元の画面を動かせる。
Ctrl + マウスドラッグ でz軸固定?
Shift + マウスドラッグ で平行移動
Ctrl + Shift + マウスドラッグ で拡大縮小(z軸のみ移動?)