一、需求原因
因为笔者对pcl库更为熟悉,希望将halcon的部分功能通过c++实现然后用pcl库处理,所以需要将halcon库处理的部分转为pcl库可处理的数据。
二、功能实现
已有halcon在c++编译环境的情况,已知ObjectModel3D为halcon处理好的3D模型;
(以下代码于2024年6月25日修正)
//此处省略halcon配置环境与头文件
//此处省略PCL库配置环境与头文件
HTuple hv_x;
HTuple hv_y;
HTuple hv_z;
HTuple hv_num;
//获取Halcon的3D模型的x/y/z数据与点的数量num
GetObjectModel3dParams(ObjectModel3d,"point_coord_x",&hv_x);
GetObjectModel3dParams(ObjectModel3d,"point_coord_y",&hv_y);
GetObjectModel3dParams(ObjectModel3d,"point_coord_z",&hv_z);
GetObjectModel3dParams(ObjectModel3d,"num_points",&hv_num);
int num = hv_num[0].I();
pcl::PointCloud<pcl::PointXYZ> pclCloud;
pclCloud.points.resize(num);
pcl::PointCloud<pcl::PointXYZ> cloud;
for(int i = 0;i < num ;++i)
{
pcl::PointXYZ& pclCloud = pclCloud.points[i];
pclPoint.x =