技术



说明:加速读取这一块 就是一个结构体  还有一个无色点云文件的读取  还有为了读取彩色点云我重载了这个方法


pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);

 fastRead("Top-part.txt",cloud);

这样就读进来了


 

 

struct VertexPositionColor

{

    int PtID;

    float x = 0.0;

    float y = 0.0;

    float z = 0.0;

    int R = -1;

    int G = -1;

    int B = -1;

    float A = 0;//反射强度为0

};

 

//加速读取点云文件(读取无色的点云)

int fastRead(char *path, PointCloud<PointXYZ>::Ptr cloud)

{

    vector<VertexPositionColor> PointVec;

    HANDLE hSrcFile = CreateFileA(path, GENERIC_READ, 0, NULL, OPEN_ALWAYS, 0, NULL);

    if (hSrcFile == INVALID_HANDLE_VALUE)

    {

        cout<< "未能加载文件" << endl;

        return 0;

    }

    LARGE_INTEGER tInt2;

    GetFileSizeEx(hSrcFile,&tInt2);

    __int64 dwRemainSize =tInt2.QuadPart;

    __int64 dwFileSize = dwRemainSize;

    DWORD dwLow = dwRemainSize>> 32;

    DWORD dwHight = dwRemainSize &0xFFFFFFFF;

    HANDLE hSrcFileMapping = CreateFileMapping(hSrcFile, NULL, PAGE_READONLY, tInt2.HighPart, tInt2.LowPart, NULL);

    if (hSrcFileMapping == INVALID_HANDLE_VALUE)

    {

        return 0;

    }

    SYSTEM_INFO SysInfo;

    GetSystemInfo(&SysInfo);

    DWORD dwGran =SysInfo.dwAllocationGranularity;

    const int BUFFERBLOCKSIZE = dwGran * 1024;

 

    const int XYZI_FC = 4;

    const int XYZRGB_FC = 6;

    const int XYZIRGB_FC = 7;

    bool AlreadySetFiledCount = false;//是否已经设置了数据宽度

 

    int totalRows = 0;//文件总行数:

    int  FieldIndex = 0;//每一个小数字的填充位置

    int  FieldCount = 0;//

每一行中整数字位置,用来判定数据列数究竟是XYZARGB

    const

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值