資源簡介
使用c++與pcl點云庫實現點云數據按照高程設置顏色進行渲染,里面包括pcl1.8屬性表,點云數據與源碼,如果已經配置pcl點云庫,下載后可以運行。沒有配置pcl點云庫沒有任何影響,主要是按高程對點云設置r,g,b顏色值而已。

代碼片段和文件信息
#include?
#include?
#include???//文件輸入輸出
#include???//點類型相關定義
#include???
using?namespace?std;
typedef?pcl::PointXYZRGBA?PointT;
typedef?pcl::PointCloud?PointCloudT;
void?displayCloudAsHeight(PointCloudT&?cloud)
{
//紅綠藍顏色設置
int?topColor[3];
int?midColor[3];
int?bottomColor[3];
topColor[0]?=?255;?topColor[1]?=?0;?topColor[2]?=?0;
midColor[0]?=?0;??midColor[1]?=?255;??midColor[2]?=?0;
bottomColor[0]?=?0;?bottomColor[1]?=?0;?bottomColor[2]?=?255;
int?r1?=?midColor[0]?-?bottomColor[0];
int?g1?=?midColor[1]?-?bottomColor[1];
int?b1?=?midColor[2]?-?bottomColor[2];
int?r2?=?topColor[0]?-?midColor[0];
int?g2?=?topColor[1]?-?midColor[1];
int?b2?=?topColor[2]?-?midColor[2];
float?maxz?minz?midz;
maxz?=?-FLT_MAX;
minz?=?FLT_MAX;
//獲取當前點云高程極值
for?(size_t?i?=?0;?i? {
if?(cloud.points[i].z?>?maxz)?maxz?=?cloud.points[i].z;
if?(cloud.points[i].z? }
midz?=?(maxz?+?minz)?/?2;
for?(size_t?i?=?0;?i? {
if?(cloud.points[i].z? float?k1?=?(cloud.points[i].z?-?minz)?/?(midz?-?minz);
cloud.points[i].r?=?bottomColor[0]?+?r1?*?k1;
cloud.points[i].g?=?bottomColor[1]?+?g1?*?k1;
cloud.points[i].b?=?bottomColor[2]?+?b1?*?k1;
}
else{
float?k2?=?(cloud.points[i].z?-?minz)?/?(maxz?-?midz);
cloud.points[i].r?=?midColor[0]?+?r2?*?k2;
cloud.points[i].g?=?midColor[1]?+?g2?*?k2;
cloud.points[i].b?=?midColor[2]?+?b2?*?k2;
}
}
}
int?main()
{
//1.讀取點云
PointCloudT::Ptr?cloud(new?PointCloudT);
if?(pcl::io::loadPCDFile(“CSite1_orig.pcd“?*cloud)?==?-1)
{
PCL_ERROR(“Cloudn‘t?read?file!“);
return?-1;
}
cout?<“讀取點個數:?“?<points.size()?<
//2.按高程設置顏色
displayCloudAsHeight(*cloud);
//3.顯示點云
pcl::visualization::PCLVisualizer?viewer(“cloud?viewer“);
viewer.addPointCloud(cloud?“sample“);
while?(!viewer.wasStopped())
{
viewer.spinOnce();
}
system(“pause“);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???13664281??2019-05-12?15:22??點云按高程渲染\CSite1_orig.pcd
?????文件???????2197??2019-05-12?15:29??點云按高程渲染\main.cpp
?????文件???????5644??2019-04-18?19:38??點云按高程渲染\PCLRelease.props
?????目錄??????????0??2019-05-12?15:42??點云按高程渲染
-----------?---------??----------?-----??----
?????????????13672122????????????????????4
- 上一篇:C語言經典排序方法及動圖演示
- 下一篇:霍夫找圓,找線的程序
評論
共有 條評論