grab_point_rs.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include <pcl\point_types.h>
  3. #include <pcl\point_cloud.h>
  4. #include "data_def_api.h"
  5. #include "data_def.h"
  6. #include "logger.h"
  7. namespace graft_cv {
  8. class CRootStockGrabPoint {
  9. public:
  10. CRootStockGrabPoint(ConfigParam&c, CGcvLogger*pLog = 0);
  11. ~CRootStockGrabPoint();
  12. int grab_point_detect( int dtype, PositionInfo& posinfo);
  13. float* get_raw_point_cloud(int &data_size);
  14. int load_data(float*pPoint, int pixel_size, int pt_size, const char* fn = 0);
  15. private:
  16. //global configure parameters
  17. ConfigParam& m_cparam;
  18. CGcvLogger * m_pLogger;
  19. int m_dtype;
  20. pcl::PointCloud<pcl::PointXYZ>::Ptr m_raw_cloud;
  21. int read_ply_file(const char* fn);
  22. double compute_nearest_neighbor_distance(pcl::PointCloud<pcl::PointXYZ>::Ptr);
  23. void find_seedling_position(
  24. pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud,
  25. std::vector<int> &first_seedling_cloud_idx,
  26. pcl::PointXYZ&xz_center
  27. );
  28. void crop_nn_analysis(
  29. pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud,
  30. pcl::PointCloud<pcl::PointXYZ>::Ptr seed_cloud,
  31. double dist_mean,
  32. std::vector<double>&mass_indices,
  33. std::vector<int>& idx
  34. );
  35. void euclidean_clustering_ttsas(
  36. pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud,
  37. double d1, double d2,
  38. std::vector<pcl::PointXYZ>&cluster_center,
  39. std::vector<std::vector<int>> &clustr_member
  40. );
  41. void cal_obb_2d(
  42. pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud,
  43. int axis,
  44. double &dx_obb,
  45. double &dy_obb,
  46. double &angle_obb);
  47. void get_optimal_seed(
  48. pcl::PointCloud<pcl::PointXYZ>::Ptr,
  49. pcl::PointXYZ&pt,
  50. int &pt_idx);
  51. void viewer_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr, std::string&winname);
  52. void viewer_cloud(pcl::PointCloud<pcl::PointXYZRGB>::Ptr, std::string&winname);
  53. void viewer_cloud_debug(pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud, pcl::PointXYZ&p, std::string&winname);
  54. };
  55. };