zoukankan      html  css  js  c++  java
  • 点云平台之CloudCompare开发二

          记得2018年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);

         }

    }

    //------------------------结束-----------------------------------

  • 相关阅读:
    【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】
    【模拟题(63550802...)】解题报告【贪心】【拓扑排序】【找规律】【树相关】
    【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
    IMemoryBufferReference and IMemoryBufferByteAccess
    SoftwareBitmap and BitmapEncoder in Windows.Graphics.Imaging Namespace
    Windows UPnP APIs
    编译Android技术总结
    Windows函数转发器
    Two Ways in Delphi to Get IP Address on Android
    Delphi Call getifaddrs and freeifaddrs on Android
  • 原文地址:https://www.cnblogs.com/z-web-2017/p/10350451.html
Copyright © 2011-2022 走看看