前提・実現したいこと
点群から法線情報を算出したいのですが、法線情報がすべてnanになってしまいます。
どうすればうまく法線を取得できるでしょうか?
該当のソースコード
C++
1#define NOMINMAX 2#define _SCL_SECURE_NO_WARNINGS 3#define _CRT_SECURE_NO_WARNINGS 4 5#include <iostream> 6#include <pcl/io/ply_io.h> 7#include <pcl/visualization/cloud_viewer.h> 8#include <pcl/console/print.h> 9#include <pcl/surface/gp3.h> 10#include <pcl/point_types.h> 11#include <pcl/features/normal_3d.h> 12 13 14int main() 15{ 16 pcl::PointCloud<PointXYZ>::Ptr cloud_i( new pcl::PointCloud<PointXYZ> ); 17 pcl::PointCloud<PointNormal>::Ptr cloud_i2( new pcl::PointCloud<PointNormal> ); 18 19 pcl::PLYReader reader; 20 reader.read( "model.ply", *cloud_i ); 21 22 // 法線を取得する 23 24 pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne; 25 ne.setInputCloud(cloud_i); 26 27 // Output datasets 28 pcl::PointCloud<pcl::Normal>::Ptr cloud_normals(new pcl::PointCloud<pcl::Normal>); 29 30 ne.setRadiusSearch(0.03); 31 32 pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>()); 33 ne.setSearchMethod(tree); 34 35 // Compute the features 36 ne.compute(*cloud_normals); 37 38 //結合 39 pcl::concatenateFields(*cloud_i, *cloud_normals, *cloud_i2); 40 41 //PLYファイルに書き出す 42 pcl::PLYWriter writer; 43 writer.write( "normal_model.ply", *cloud_i2 ); 44} 45
補足情報(FW/ツールのバージョンなど)
Point Cloud Library
C++
ubuntu16.04
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/17 06:20