#pragma once #include #include #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; };