天天看點

cloudcompare旋轉點雲_點雲平台之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<: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<: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<:pointxyzrgb>::Ptr pclCloud, ccPointCloud* m_cloud)

{

int num = pclCloud->points.size();

m_cloud->reserve(static_cast(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<:pointxyz>::Ptr pclCloud, ccPointCloud* m_cloud)

{

int num = pclCloud->points.size();

m_cloud->reserve(static_cast(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);

}

}

//------------------------結束-----------------------------------