資源簡介
機載點云數學形態學類別。
代碼片段和文件信息
#include
#include
#include
#include
#include
#include
using?namespace?std;
struct?Point
{
double?x?y?z;
int?r?g?b;
int?c;
};
int?main()
{
ifstream?FileIn;
string?filename;
std::cout?<“點云路徑:“?< cin?>>?filename;
FileIn.open(filename);
vector?data;
double?Xmax?=?-DBL_MAX?Xmin?=?DBL_MAX?Ymax?=?-DBL_MAX?Ymin?=?DBL_MAX;
while?(!FileIn.eof())
{
char?ch1?ch2;
Point?p;
FileIn?>>?p.x?>>ch1>>?p.y?>>ch2>>?p.z;
data.push_back(p);
if?(p.x>Xmax)
{
Xmax=p.x;
}
if?(p.x? {
Xmin?=?p.x;
}
if?(p.y>Ymax)
{
Ymax?=?p.y;
}
if?(p.y? {
Ymin?=?p.y;
}
}
FileIn.close();
std::cout?< //格網化
double?grid?=?1;
int?width?=?(int)((Xmax?-?Xmin)?/?grid)+1;//強制類型轉換
int?height?=?(int)((Ymax?-?Ymin)?/?grid)?+?1;
double?*PointGrid?=?new?double[width*height];//動態申請內存
for?(int?i?=?0;?i? PointGrid[i]?=?0;
for?(int?i?=?0;?i? {
int?col?=?(int)((data[i].x?-?Xmin)?/?grid);
int?row?=?(int)((data[i].y?-?Ymin)?/?grid);
if?(PointGrid[row*width?+?col]?!=?0)
{
if(PointGrid[row*width?+?col]>data[i].z)
PointGrid[row*width?+?col]?=?data[i].z;
}
else?if?(PointGrid[row*width?+?col]?==?0)
{
PointGrid[row*width?+?col]?=?data[i].z;
}
}
//腐蝕操作
double?*MinPointGrid?=?new?double[width*height];//動態申請內存
int?WindowSize?=?10;
for?(int?row?=?0;?row? {
for?(int?col?=?0;?col? {
int?centerRow?=?row;?int?centerCol?=?col;
double?Minz?=?PointGrid[row*width?+?col];
for?(int?x?=?-WindowSize?/?2;?x?<=?Wind
- 上一篇:OpenGL實現模擬瀑布的粒子系統
- 下一篇:c++ 編寫的 有理數類
評論
共有 條評論