PCL을 통하여 Hello World 찍기
윈도우에서 PCL을 설치하였으면 제대로 동작하는지 확인할 필요가 있다.
TestPCL 콘솔 프로젝트를 만들어서 간단하게 테스트해 보도록 하자.
PCL 1.6과 Visual Studio 2008을 기준으로 작성되었다.
1. TestPCL.cpp 파일에 코딩을 한다.
// TestPCL.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
using namespace std;
using namespace pcl;
using namespace io;
int _tmain(int argc, _TCHAR* argv[])
{
PointCloud<PointXYZ> cloud;
// 5x1 짜리 xyz point cloud data buffer를 할당한다.
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize (cloud.width * cloud.height);
//랜덤 값을 넣어준다.
for (size_t i = 0; i < cloud.points.size (); ++i)
{
cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
}
// 값을 저장한다.
savePCDFileASCII ("test_pcd.pcd", cloud);
cerr << "Hello World" << endl;
cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << endl;
// 값을 터미널에 출력한다
for (size_t i = 0; i < cloud.points.size (); ++i)
cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << endl;
return 0;
}
2. Property 설정을 한다.
Configuration Prpperties -> C/C++ -> Additional Include Directories
Configuration Properties -> Linker -> Additional Library Directories
-> 설정해주는 파일들은 OpenNI, PCL, boost, Eigen,, FLANN, Qhull, VTK
* Additional Include Directories
" c:\Program Files (x86)\OpenNI\Include";"c:\Program Files (x86)\PCL 1.6.0\include\pcl-1.6";"c:\Program Files (x86)\PCL 1.6.0\3rdParty\Boost\include";"c:\Program Files (x86)\PCL 1.6.0\3rdParty\Eigen\include";"c:\Program Files (x86)\PCL 1.6.0\3rdParty\FLANN\include";"c:\Program Files (x86)\PCL 1.6.0\3rdParty\Qhull\include";"c:\Program Files (x86)\PCL 1.6.0\3rdParty\VTK\include\vtk-5.8"
* Additional Library Directories
c:\Program Files (x86)\openNi\Lib;c:\Program Files (x86)\PCL 1.6.0\lib;c:\Program Files (x86)\PCL 1.6.0\3rdParty\Boost\lib;c:\Program Files (x86)\PCL 1.6.0\3rdParty\FLANN\lib;c:\Program Files (x86)\PCL 1.6.0\3rdParty\Qhull\lib;c:\Program Files (x86)\PCL 1.6.0\3rdParty\VTK\lib\vtk-5.8;
3. stdafx.cpp 파일에 라이브러리를 링크시킨다.
게시글 (PCL을 설치하여보자)와 같은 내용이다. http://blog.daum.net/openpcl/6
#ifdef _DEBUG
#pragma comment(lib, "pcl_apps_debug.lib")
#pragma comment(lib, "pcl_common_debug.lib")
#pragma comment(lib, "pcl_features_debug.lib")
#pragma comment(lib, "pcl_filters_debug.lib")
#pragma comment(lib, "pcl_io_debug.lib")
#pragma comment(lib, "pcl_io_ply_debug.lib")
#pragma comment(lib, "pcl_kdtree_debug.lib")
#pragma comment(lib, "pcl_keypoints_debug.lib")
#pragma comment(lib, "pcl_octree_debug.lib")
#pragma comment(lib, "pcl_registration_debug.lib")
#pragma comment(lib, "pcl_sample_consensus_debug.lib")
#pragma comment(lib, "pcl_search_debug.lib")
#pragma comment(lib, "pcl_segmentation_debug.lib")
#pragma comment(lib, "pcl_surface_debug.lib")
#pragma comment(lib, "pcl_tracking_debug.lib")
#pragma comment(lib, "pcl_visualization_debug.lib")
#else
#pragma comment(lib, "pcl_apps_release.lib")
#pragma comment(lib, "pcl_common_release.lib")
#pragma comment(lib, "pcl_features_release.lib")
#pragma comment(lib, "pcl_filters_release.lib")
#pragma comment(lib, "pcl_io_release.lib")
#pragma comment(lib, "pcl_io_ply_release.lib")
#pragma comment(lib, "pcl_kdtree_release.lib")
#pragma comment(lib, "pcl_keypoints_release.lib")
#pragma comment(lib, "pcl_octree_release.lib")
#pragma comment(lib, "pcl_registration_release.lib")
#pragma comment(lib, "pcl_sample_consensus_release.lib")
#pragma comment(lib, "pcl_search_release.lib")
#pragma comment(lib, "pcl_segmentation_release.lib")
#pragma comment(lib, "pcl_surface_release.lib")
#pragma comment(lib, "pcl_tracking_release.lib")
#pragma comment(lib, "pcl_visualization_release.lib")
#endif
4. 프로그램을 실행하면 아래와 같이 출력되면 성공이다
* 테스트 프로그램