Edited at

PointCloudLibraryをインストールしてからとりあえずOBJファイルを描画してみるまで

More than 1 year has passed since last update.

PointCloudLibrary1.7.2をインストールして、

とりあえずVisualStudio2013でOBJファイルから点群を描画するまでをまとめます。


PCL1.7.2のダウンロードとインストール



  1. こちらから"PCL-1.7.2-AllOne-msvc2013-win64(/win32).exe"と"PCL.props"をダウンロード

  2. exeファイルを起動してPCLをインストール(特に設定する項目はありません)

これで通常ならCドライブに"PCL1.7.2"が追加されたはずです。


プロジェクトの設定


  1. Visual C++/Win32 コンソールアプリケーションで新しいプロジェクトを作成(「空のプロジェクト」にチェック)

  2. プロパティマネージャーから「既存のプロパティシートの追加」、PCL.propsを追加する

  3. プロパティマネージャーから現状の"構成"・"プラットフォーム"に対応するフォルダを選択し、その中にあるPCL.propsを右クリックし、プロパティを開く(構成はReleaseの方が速度が断然速い)

  4. 共通プロパティ/ユーザマクロから「マクロの追加」、名前を"PCL_ROOT"、値を"C:\Program Files\PCL 1.7.2"で設定

これであとはコードを書くだけです。


OBJファイルを入力として点群を描画する

今回記述したコードは以下の通り。

OBJファイルは適当に用意してください。


main.cpp

// Cのmin,maxマクロを無効にする

#define NOMINMAX
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <Windows.h>
#include <pcl\visualization\cloud_viewer.h>
#include <pcl\io\vtk_lib_io.h>

// objデータを取得
const char filename[] = "bunny.obj";

void main()
{
try{
// objファイルを読み込む
pcl::PolygonMesh::Ptr mesh( new pcl::PolygonMesh() );
pcl::PointCloud<pcl::PointXYZ>::Ptr obj_pcd( new pcl::PointCloud<pcl::PointXYZ>() );
if ( pcl::io::loadPolygonFileOBJ( filename, *mesh ) != -1 ){
pcl::fromPCLPointCloud2( mesh->cloud, *obj_pcd );
}

// ウィンドウの作成
pcl::visualization::PCLVisualizer viewer( "Point Cloud Viewer" );

// PointCloudを追加
viewer.addPointCloud( obj_pcd );

// ウィンドウが閉じていない間続く
while ( !viewer.wasStopped() ) {
// スクリーンを更新
viewer.spinOnce();

// ESCAPEキーが押されたら終了
if ( GetKeyState( VK_ESCAPE ) < 0 ){
break;
}
}
}
catch ( std::exception& ex ){
std::cout << ex.what() << std::endl;
}
}


実行結果

2017-01-02.png

Github:https://github.com/leonarudo00/PCLsamples


参考

KINECT for Windows SDKプログラミングKinect for Windows v2センサー対応版

聞きかじりメモ