12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #pragma once
- #include <string>
- #include <mutex>
- #ifndef LIB_SIFT_API
- #ifdef LIB_EXPORTS
- #if defined(_MSC_VER)
- #define LIB_SIFT_API __declspec(dllexport)
- #else
- #define LIB_SIFT_API __attribute__((visibility("default")))
- #endif
- #else
- #if defined(_MSC_VER)
- #define LIB_SIFT_API
- #else
- #define LIB_SIFT_API
- #endif
- #endif
- #endif
- /*
- * PointSift 点云分割类
- * 加载PointSift网络,分割点云
- */
- class LIB_SIFT_API PointSifter
- {
- public:
- //初始化PointSift
- //point_num:pointsift输入点数
- //cls_num:PointSift输出类别数
- PointSifter(int point_num, int cls_num);
- ~PointSifter();
- //加载网络参数
- //meta:tensorflow网络结构定义文件
- //cpkt:tensorflow网络权重
- bool Load(std::string meta, std::string cpkt);
- //预测
- //data:输入数据,大小为 输入点数*3
- //output:输出数据,大小为 输入点数*类别数
- bool Predict(float* data, float* output);
- //错误原因
- std::string LastError();
- private:
- PointSifter();
- protected:
- std::mutex m_mutex;
- std::string m_error;
- bool m_bInit;
- int m_point_num; //点云的数量,默认8192
- int m_cls_num; //拆分点云的类别数,默认2个(只有车轮和车身, 通过box限定范围,可以直接剔除地面和杂物)
- void* m_sess;
- };
|