PointCloudLibrary1.7.2をインストールして、
とりあえずVisualStudio2013でOBJファイルから点群を描画するまでをまとめます。
#PCL1.7.2のダウンロードとインストール#
- こちらから"PCL-1.7.2-AllOne-msvc2013-win64(/win32).exe"と"PCL.props"をダウンロード
- exeファイルを起動してPCLをインストール(特に設定する項目はありません)
これで通常ならCドライブに"PCL1.7.2"が追加されたはずです。
#プロジェクトの設定#
- Visual C++/Win32 コンソールアプリケーションで新しいプロジェクトを作成(「空のプロジェクト」にチェック)
- プロパティマネージャーから「既存のプロパティシートの追加」、PCL.propsを追加する
- プロパティマネージャーから現状の"構成"・"プラットフォーム"に対応するフォルダを選択し、その中にあるPCL.propsを右クリックし、プロパティを開く(構成はReleaseの方が速度が断然速い)
- 共通プロパティ/ユーザマクロから「マクロの追加」、名前を"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;
}
}
Github:https://github.com/leonarudo00/PCLsamples
#参考#
KINECT for Windows SDKプログラミングKinect for Windows v2センサー対応版
聞きかじりメモ