点云平台之CloudCompare开发二
作者:互联网
记得2019年9月尾写了一篇关于cloudcompare开发的博文,当前也属于我所有博文里访问量最高的一篇博文,也不知道码迷是个什么网站,简单粗暴的转载了我的这篇博客,本着资源共享的精神,姑且也不必在意这些了,就当做是一种推广吧!记得之前有些网友对博文里的一些未知的接口进行了询问,本来我的博客打算停止更新的,因为目前已经脱离学校了,再很难有剩余的时间来研究这些了。不过感觉这些基本的入门知识对每一个新人来说还是挺有用的,自己当年也是过来人,深有体会,今天 是我2018年农历年的最后一篇博客也是我2019年的第一篇博客。
感觉我的博客好像要慢慢变成文摘了,正逢春节小长假又是新年伊始,此情此景,我又情不自禁的抒发个人感悟了:
一天又一天,一年又一年,转眼间到了2018农历新年,也已经工作半年有余。虽然不具备诗人那种不食人间烟火的气质与惊世骇俗的才华,但是诗人的那份多愁善感已经具备10多年之久,不知道为什么了学了理科,也不知道了为什么还学了测绘,最后步入了与文艺气息完全水火不容的码农行列,其实当文艺真成为了一种职业,如果其无法让你立足于这个社会,估计你也会痛恨它,唾弃它,因为当前最不缺的就是“人”,而且什么人才都有,没有脱颖而出的才华,最终也只能被这历史洪流所埋藏,完全留不下任何足迹,学会适应,不断给自己重新定位显得弥足珍贵。其实也得感谢自己一路稀里糊涂的选择以及自己所秉持着的努力踏实的家庭教育,这样至少当前能把文艺当成爱好,同时也不至于饿死街头,其实我以前觉得做你爱做的工作,然后开开心心的干好它,经历了半年的工作以后,其实这只是乌托邦,当今社会处于一个变革的时代,人们对物质的依赖也完全超越了过往任何一个时期,所以很多人都是拿出至少120%的热情在努力工作,预想在一个举目无亲的城市里生存下来,甚至是体面的活着,你除了拿出至少超越120%的努力,那剩下的你还能有什么可以作为资本呢?弹簧超过了弹性限度,那一切又会归于无止尽的平淡,无止尽的平淡那就自然而然衍生出了枯燥甚至是苦闷。其实想通之后,这样就释然多了:不是你一个人累,万千有理想的年轻人都过得很累,其实我以前特别喜欢严复天演论里的一句话: 世间万物,优胜者生存,国家名族亦如此,今我中华民族若不奋起,必将被人类历史所淘汰。(不知道是不是书里的原话,但至少是这本书的中心思想),虽然用在这里有点不合时宜,但是国家民族如此,作为芸芸众生中渺小的个人更是如此了,这也是我3年前的座右铭,不过现在不需要了,因为生活的艰辛已经是深入骨髓了,所以刻骨铭心的道理是不需要刻意去时刻来警醒自己的,如果每天都满怀这种忧患意识,那活的岂不是很累,所以我现在才明白了什么是真正的内在了,其实当你为某件事不懈奋斗的时候,你会在不自觉中练就达到这种目标的人格素质,就像明天都是除夕了,今天我突然想起了还一篇技术博客没写(之前承诺过一位网友),当然这几天也会偶尔琢磨之前一直在研究的lod技术,但是以前的我能无所事事整整一个假期,这也算是一种成长吧。
废话 到此为止,爱看的可以看看,不爱看的,直接可以步入下面正题
该段代码直接来源于我cc平台里的代码,直接可用。
//----------------------ccCloud转pointcloud---------------------
//cccloud转换成pcl的pointcloud --- rgb
void CCcloudToPCLcloud(ccPointCloud* m_cloud, PointCloud<pcl::PointXYZRGB>::Ptr pclCloud)
{
int num = m_cloud->size();
for (int i = 0; i < num; i++)
{
PointXYZRGB pointT;
pointT.x = (m_cloud->getPoint(i))->x;
pointT.y = (m_cloud->getPoint(i))->y;
pointT.z = (m_cloud->getPoint(i))->z;
if (m_cloud->getPointColor(i)[0] != NULL)
{
pointT.r = (m_cloud->getPointColor(i))[0];
pointT.g = (m_cloud->getPointColor(i))[1];
pointT.b = (m_cloud->getPointColor(i))[2];
}
pclCloud->push_back(pointT);
}
}
//cccloud转换成pcl的pointcloud no rgb--重载一下这个函数
void CCcloudToPCLcloud(ccPointCloud* m_cloud, PointCloud<pcl::PointXYZ>::Ptr pclCloud)
{
int num = m_cloud->size();
for (int i = 0; i < num; i++)
{
PointXYZ pointT;
pointT.x = (m_cloud->getPoint(i))->x;
pointT.y = (m_cloud->getPoint(i))->y;
pointT.z = (m_cloud->getPoint(i))->z;
pclCloud->push_back(pointT);
}
}
//----------------------pointCloud转ccCloud---------------------
void PCLcloudToCCcloud(PointCloud<pcl::PointXYZRGB>::Ptr pclCloud, ccPointCloud* m_cloud)
{
int num = pclCloud->points.size();
m_cloud->reserve(static_cast<unsigned>(num));
for (int i = 0; i < num; i++)
{
CCVector3 P11(pclCloud->points[i].x, pclCloud->points[i].y, pclCloud->points[i].z);
m_cloud->addPoint(P11);
ccColor::Rgb rgb;//定义一个颜色
if (pclCloud->points[0].r <= 1 && pclCloud->points[0].g <= 1)
{
rgb = ccColor::Rgb(pclCloud->points[i].r*255, pclCloud->points[i].g*255, pclCloud->points[i].b*255);
}
else
{
rgb = ccColor::Rgb(pclCloud->points[i].r, pclCloud->points[i].g, pclCloud->points[i].b);
}
m_cloud->resizeTheRGBTable(true);
m_cloud->setPointColor(i, rgb.rgb);
}
}
//无色的cccloud ---重载一下这个函数
void PCLcloudToCCcloud(PointCloud<pcl::PointXYZ>::Ptr pclCloud, ccPointCloud* m_cloud)
{
int num = pclCloud->points.size();
m_cloud->reserve(static_cast<unsigned>(num));
for (int i = 0; i < num; i++)
{
CCVector3 P11(pclCloud->points[i].x, pclCloud->points[i].y, pclCloud->points[i].z);
m_cloud->addPoint(P11);
}
}
//------------------------结束-----------------------------------
标签:num,int,平台,pclCloud,points,pointT,点云,CloudCompare,cloud 来源: https://www.cnblogs.com/z-web-2017/p/10350451.html