需要包含的头文件包括
#include
#include
#include
#include
#include
#include
读las文件
bool readLasFile(string filename){pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); std::ifstream ifs;ifs.open(filename, std::ios::in | std::ios::binary);if (!ifs.is_open())return false;liblas::ReaderFactory f;liblas::Reader reader = f.CreateWithStream(ifs);liblas::Header const& header = reader.GetHeader(); int pointsNum = header.GetPointRecordsCount(); cloud->width = pointsNum;cloud->height = 1;cloud->resize(pointsNum);vector<uint8_t> pclassification(pointsNum); vector<liblas::Color> pcolor(pointsNum); vector<uint16_t> pintencity(pointsNum); for (int i = 0; i < pointsNum; i++) {reader.ReadNextPoint();const liblas::Point& p = reader.GetPoint();float px = (float)p.GetX();float py = (float)p.GetY();float pz = (float)p.GetZ();(*cloud)[i].x = px;(*cloud)[i].y = py;(*cloud)[i].z = pz;pclassification[i] = p.GetClassification().GetClass();pcolor[i] = p.GetColor();pintencity[i] = p.GetIntensity();}ifs.close(); return true;
}
写las文件
bool writeLasFile(string filename, liblas::Header header, pcl::PointCloud<pcl::PointXYZ>::Ptr cloud) {std::ofstream ofs(filename.c_str(), ios::out | ios::binary);liblas::Writer writer(ofs, header);writer.WriteHeader();int pointsNum = cloud->size(); float minx = 99999999;float miny = 99999999;float minz = 99999999;float maxx = -99999999;float maxy = -99999999;float maxz = -99999999;liblas::Point p(&header);for (int i = 0; i < pointsNum; i++) {float tx = cloud->at(i).x;float ty = cloud->at(i).y;float tz = cloud->at(i).z;minx = minx > tx ? tx : minx;miny = miny > ty ? ty : miny;minz = minz > tz ? tz : minz;maxx = maxx < tx ? tx : maxx;maxy = maxy < ty ? ty : maxy;maxz = maxz < tz ? tz : maxz;p.SetCoordinates(tx, ty, tz);writer.WritePoint(p);}header.SetMax(maxx, maxy, maxz); header.SetMin(minx, miny, minz);header.SetPointRecordsCount(pointsNum); writer.SetHeader(header); writer.WriteHeader(); ofs.close(); return true;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!