🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

4096閲覧

点群(PLYファイル)から法線情報を算出したいのですが、どうしてもnanが出力されてしまいます。

wakasagi

総合スコア7

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/10/14 16:36

前提・実現したいこと

点群から法線情報を算出したいのですが、法線情報がすべて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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ne.setRadiusSearch(0.03);
自分が同様の問題に直面した際は半径の値を大きくすることで解決したました。(例えば0.03→10.0)

投稿2019/10/17 01:09

d31m

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakasagi

2019/10/17 06:20

解決しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問