pointSIFT_API.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include <string>
  3. #include <mutex>
  4. #ifndef LIB_SIFT_API
  5. #ifdef LIB_EXPORTS
  6. #if defined(_MSC_VER)
  7. #define LIB_SIFT_API __declspec(dllexport)
  8. #else
  9. #define LIB_SIFT_API __attribute__((visibility("default")))
  10. #endif
  11. #else
  12. #if defined(_MSC_VER)
  13. #define LIB_SIFT_API
  14. #else
  15. #define LIB_SIFT_API
  16. #endif
  17. #endif
  18. #endif
  19. /*
  20. * PointSift 点云分割类
  21. * 加载PointSift网络,分割点云
  22. */
  23. class LIB_SIFT_API PointSifter
  24. {
  25. public:
  26. //初始化PointSift
  27. //point_num:pointsift输入点数
  28. //cls_num:PointSift输出类别数
  29. PointSifter(int point_num, int cls_num);
  30. ~PointSifter();
  31. //加载网络参数
  32. //meta:tensorflow网络结构定义文件
  33. //cpkt:tensorflow网络权重
  34. bool Load(std::string meta, std::string cpkt);
  35. //预测
  36. //data:输入数据,大小为 输入点数*3
  37. //output:输出数据,大小为 输入点数*类别数
  38. bool Predict(float* data, float* output);
  39. //错误原因
  40. std::string LastError();
  41. private:
  42. PointSifter();
  43. protected:
  44. std::mutex m_mutex;
  45. std::string m_error;
  46. bool m_bInit;
  47. int m_point_num; //点云的数量,默认8192
  48. int m_cls_num; //拆分点云的类别数,默认2个(只有车轮和车身, 通过box限定范围,可以直接剔除地面和杂物)
  49. void* m_sess;
  50. };