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

  • 1
    いいね
  • 0
    コメント

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センサー対応版
聞きかじりメモ