読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

PCLのKinectGrabberを作りました

PCL

前に紹介したPCLのサンプルです。

前回のライブラリと組み合わせてKinectGrabberを作りました。PCLのバージョンは1.6です。

こんな感じで書けます。あとはコールバック関数内でcloudに対して処理を行えば、平面検出やラベリングを行うことができます。基本的にOpenNIGrabberと似た作りにしていますが、カラーとデプスを非同期にしていないので、こちらもpull requestいただければ^^;

#include <Windows.h>

#include <NaturalSoftware.Kinect.PCL\KinectGrabber.h>

#include <pcl/visualization/cloud_viewer.h>

void main()

{

try {

// viewerを作る

pcl::visualization::CloudViewer viewer( "Kinect Viewer" );

// データ更新のコールバック関数

boost::function<void (const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr&)> f =

[&viewer](const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr &cloud) {

if (!viewer.wasStopped()) {

viewer.showCloud( cloud );

}

};

// Kinectの入力を作る

pcl::Grabber* grabber = new pcl::KinectGrabber();

grabber->registerCallback( f );

grabber->start();

while ( !viewer.wasStopped() ) {

::Sleep( 0 );

}

grabber->stop();

}

catch ( std::exception& ex ) {

std::cout << ex.what() << std::endl;

}

}