- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
举个例子,在二维空间中,正方形的位置由'1'的集合表示,空白的位置由'0'的集合表示
00000000000000
00000111000000
00000111000000
00000111000000
00000000000000
发现 pcl::OrganizedFastMesh 类是完成此任务的一种方法。 http://docs.pointclouds.org/trunk/classpcl_1_1_organized_fast_mesh.html网站显示了类(class)的详细信息,但是,这对我来说很难理解。比如输入的文件名为'example.STL',如何获取上面'0'和'1'的信息到数组'siteInfo[][]'?
最佳答案
为了从 STL 导入,您需要从顶点生成点。这是我将 STL 导入 pcl 点云的函数:
//generates an evenly distributed point cloud from stl file (assumed to be scaled in mm)
//maxPPDist: desired max distance between points (all surfaces will be upsampled until this density is reached)
//normalNeighborCount: how many points to include in NN normal resampling. (should match what is used on camera cloud)
bool PCL_Util::importCAD_STL(pcl::PointCloud<pcl::PointNormal>::Ptr &objectCloud,
std::string fileName,
double maxPPDist,
bool normResample,
int normalNeighborCount,
bool fastNormRecombination)
{
pcl::PolygonMesh mesh;
int fileReadVal;
try
{
fileReadVal = pcl::io::loadPolygonFileSTL(fileName, mesh);
}
catch (...)
{
return false;
}
if (fileReadVal == 0)
{
PCL_ERROR("Failed to load STL file\n");
return false;
}
else
{
pcl::PointCloud<pcl::PointNormal>::Ptr outputCloud(new pcl::PointCloud<pcl::PointNormal>);
pcl::PointCloud<pcl::PointXYZ> objCloud;
pcl::PCLPointCloud2 ptCloud2 = mesh.cloud;
pcl::fromPCLPointCloud2(ptCloud2, objCloud);
for (int i = 0; i < mesh.polygons.size(); i++)
{
pcl::Vertices currentPoly = mesh.polygons[i];
for (int ii = 0; ii < currentPoly.vertices.size(); ii++)
{
pcl::PointNormal currentPt = pcl::PointNormal();
currentPt.x = objCloud[currentPoly.vertices[ii]].x;
currentPt.y = objCloud[currentPoly.vertices[ii]].y;
currentPt.z = objCloud[currentPoly.vertices[ii]].z;
outputCloud->points.push_back(currentPt);//push in points without normals
}
//make the assumption that at least 3 verticies for last poly (standard stl... not sure how dirty this is)
int index = outputCloud->points.size() - 1;
pcl::PointXYZ pt3(outputCloud->points[index].x, outputCloud->points[index].y, outputCloud->points[index].z);
pcl::PointXYZ pt2(outputCloud->points[index - 1].x, outputCloud->points[index - 1].y, outputCloud->points[index - 1].z);
pcl::PointXYZ pt1(outputCloud->points[index - 2].x, outputCloud->points[index - 2].y, outputCloud->points[index - 2].z);
Eigen::Vector3f vec12(pt2.x - pt1.x, pt2.y - pt1.y, pt2.z - pt1.z);
Eigen::Vector3f vec23(pt3.x - pt2.x, pt3.y - pt2.y, pt3.z - pt2.z);
Eigen::Vector3f vecNorm = vec12.cross(vec23);
vecNorm.normalize();
for (int ii = 0; ii < 3; ii++)
{
outputCloud->points[index - ii].normal_x = vecNorm[0];
outputCloud->points[index - ii].normal_y = vecNorm[1];
outputCloud->points[index - ii].normal_z = vecNorm[2];
}
//interpolate each triangular surface to fit desired resolution
if (maxPPDist != -1)
{
interpolateTriangle(outputCloud, maxPPDist);
}
}
if (fastNormRecombination)//faster by an order of magnitude, but less accurate normals stl surface join points
{
voxelPruneCloud<pcl::PointNormal>(outputCloud, maxPPDist / 2.0f, maxPPDist / 2.0f, maxPPDist / 2.0f);
}
else//very slow, but generates more accurate normals at joint points
{
combineColocatedPoints(outputCloud, maxPPDist / 2.0f);
}
if (normResample)//uses the current normals as hemisphere guides for newly calculated normals
{
resampleNormalCloud(outputCloud, normalNeighborCount);
}
copyPointCloud(*outputCloud, *objectCloud);
printf("File imported successfully?!\n");
return true;
}
}
就生成二维数组而言...我会研究光线转换以生成结构化点云/表面。 ( http://www.pcl-users.org/From-3D-point-cloud-to-depth-map-td4027567.html ) 我个人编写了自己的实现以允许线程化,但我确信 pcl 具有一些内置函数。
关于c++ - 使用PCL(point cloud library)获取一个物体信息数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43691661/
为什么这不返回每个社区(边界框)中的点数? import geopandas as gpd def radius(points_neighbour, points_center, new_field_
嘿! 我有一张图片,我想在该图片上选择一个点并告诉它应该变换到哪个坐标。我想为一些数字点做这个。当我完成时,整个图像会发生变化,因此会考虑局部性。 最重要的是,我可以选择任意多的点,并且所选的点会转换
我有代码: class Point3D{ protected: float x; float y; float z; public:
我正在开发我的第一个 Spring Boot + Spring Data JPA + Hibernate 5,在 PostgreSQL 上工作数据库。 我在尝试映射具有 point 作为数据类型的字段
当我尝试编译这个简单的代码时,我在构造函数中遇到了两个错误:“类型值不能用作默认参数”我该如何解决这个问题? public class PointerArgs { public P
当我尝试编译这个简单的代码时,我在构造函数中遇到了两个错误:“类型值不能用作默认参数”我该如何解决这个问题? public class PointerArgs { public P
目前我正在实现一项提供集体旅行的交通服务,但我遇到了一个问题: 假设我在下图中得到了点 G = {A,B,C,D,F,R,W} =>。 当用户选择 from(A) -> to(W) 时,它们之间有点:
我有一个名为 Shop 的实体,它有一个名为 Position 的 DBGeorgpraphy 列 数据库中的示例商店的位置值为 POINT (145.034242 -37.825519) 我正在尝试
我看了几个类似的帖子,但我要么不明白他们提供的是什么,要么他们似乎不适用。我是新来的,我会尽力遵守规则。 我们在类(class)的最后 2 周学习 c++,期末学习 40 小时 :),所以我是初学者。
我正在使用 tf2 将点从源帧转换为目标帧。下面是代码片段: import tf2_ros import tf2_geometry_msgs transform = tf_buffer.lookup_
我需要找到一种算法,根据给定的一组大小为 n 的点 S 计算凸包。我知道 S 正好有 6 个点 构成了凸包。 最好和最有效的方法是什么? 我想从 S 生成所有可能的点组合(这将是 n 选择 6 个点)
我有一个在屏幕坐标中的 CGPoint。我还有一个应用了变换矩阵(缩放、旋转和平移)的 CALayer。 如何将屏幕坐标中的点转换为图层的局部坐标? 最佳答案 CALayer 有执行此操作的方法,请在
我正在创建自定义控件,它将从点列表(或数组)中绘制形状。我已经完成了基本的绘图功能,但现在我正在为 Visual Studio 中的设计时支持而苦苦挣扎。 我创建了两个属性: private Poin
此函数是从“JavaScript:权威指南”复制的,但由于某种原因它不起作用... **points.dist = function () { ^ ReferenceError: 点未定义**我对此很
我有一个像这样的自定义适配器: private List items = new ArrayList<>(); private Context context; public UserSpinnerA
代码: UPDATE tbl_name SET points = points + 1 WHERE 'GAME 1' LIKE "%Vikes%" GAME 1 列包含包含 Vikes
我有一个点。我正在尝试将 x 作为 int。如果我使用 Point.x,我将得到 x 作为 int。但我的印象是我应该尽可能使用 setter/getter ( Why use getters and
我正在开发一个小型信誉系统,但遇到了一个问题。 因此,在我的示例中,我想为 4 种不同类型的用户创建一个图片网站;我们称他们为:业余、好、非常好、专业。 每个用户可以上传一张图片,这张图片可以被其他用
我有一个关于事件形状模型的问题。我正在使用 T. Coots 的论文(可以找到 here 。) 我已经完成了所有初始步骤(Procrustes 分析计算平均形状,PCA 减少尺寸)但仍停留在拟合上。
Android moving Image one point (0,0) to another point (30,400). using animation or normal looping co
我是一名优秀的程序员,十分优秀!