2017-07-05 16 views
-2

私はPCLで新しくなっています。私はPCLライブラリを使用しています。ポイントクラウドからポイントを抽出する方法や、特定のポイントを新しいポイントにコピーする方法を探しています。私はそれが条件を尊重し、良い点だけでポイントクラウドを取得したい場合は、各ポイントを確認したい。ありがとう!pcl :: PointCloud <pcl :: PointXYZRGB>からポイントを削除する

+0

ようこそStackOverflowへ。既に試したコードとあなたの特定の問題がどこにあるのかを記入してください。 – Gerriet

答えて

0

PCLを初めてお使いの方。ドキュメントを見てみることをお勧めする必要があります:

http://pointclouds.org/documentation/tutorials/

私はこのチュートリアルで説明されて探しているものだと思います:再現する

http://pointclouds.org/documentation/tutorials/remove_outliers.php#remove-outliers

てみてくださいあなたのマシン上の例を見て、必要に応じて修正してください。

+0

問題は、各点について、私はz座標に基づいて異なる条件を有することである。 – mrx

1

ExtractIndicesクラスを使用します。

  • 変数PointIndicesに削除するあなたのポイントを追加するには、実行フィルタ()メソッドは、元の雲を取得するには、「負」
  • ExtractIndicesにこれらの指標を渡しますマイナスあなたのポイント

例:

pcl::PointCloud<pcl::PointXYZ>::Ptr p_obstacles(new pcl::PointCloud<pcl::PointXYZ>); 
    pcl::PointIndices::Ptr inliers(new pcl::PointIndices()); 
    pcl::ExtractIndices<pcl::PointXYZ> extract; 
    for (int i = 0; i < (*p_obstacles).size(); i++) 
    { 
    pcl::PointXYZ pt(p_obstacles->points[i].x, p_obstacles->points[i].y, p_obstacles->points[i].z); 
    float zAvg = 0.5f; 
    if (abs(pt.z - zAvg) < THRESHOLD) // e.g. remove all pts below zAvg 
    { 
     inliers->indices.push_back(i); 
    } 
    } 
    extract.setInputCloud(p_obstacles); 
    extract.setIndices(inliers); 
    extract.setNegative(true); 
    extract.filter(*p_obstacles); 
関連する問題