chessboard_calibration.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #pragma once
  2. #include <pcl\point_types.h>
  3. #include <pcl\point_cloud.h>
  4. #include <pcl\segmentation\sac_segmentation.h>
  5. #include "data_def_api.h"
  6. #include "data_def.h"
  7. #include "logger.h"
  8. #include "imstorage_manager.h"
  9. namespace graft_cv {
  10. class CChessboardCalibration {
  11. public:
  12. CChessboardCalibration(ConfigParam&c, CGcvLogger*pLog = 0);
  13. ~CChessboardCalibration();
  14. int cross_detect(PositionInfo& posinfo);
  15. float* get_raw_point_cloud(int &data_size);
  16. int load_data(float*pPoint, int pixel_size, int pt_size, int dtype, const char* fn = 0);
  17. void set_image_saver(CImStoreManager** ppis) { m_ppImgSaver = ppis; }
  18. private:
  19. //global configure parameters
  20. ConfigParam& m_cparam;
  21. CGcvLogger * m_pLogger;
  22. int m_dtype;
  23. string m_pcdId;
  24. CImStoreManager** m_ppImgSaver;
  25. pcl::PointCloud<pcl::PointXYZ>::Ptr m_raw_cloud;
  26. double m_cloud_mean_dist;
  27. double min_dist_of_lines(
  28. pcl::ModelCoefficients::Ptr line_1,//input
  29. pcl::ModelCoefficients::Ptr line_2//input
  30. );
  31. void virtual_cross_of_lines(
  32. pcl::ModelCoefficients::Ptr line_1, //input
  33. pcl::ModelCoefficients::Ptr line_2,//input
  34. pcl::PointXYZ& cross_pt//output
  35. );
  36. int read_ply_file(const char* fn);
  37. double compute_nearest_neighbor_distance(pcl::PointCloud<pcl::PointXYZ>::Ptr);
  38. void cloud_mean_dist(
  39. pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud, //input 输入点云数据
  40. double& mean_dist
  41. );
  42. void gen_result_img(
  43. pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud_raw,//输入,未经过滤的整体点云in_cloud_raw,
  44. pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud_edge, //输入,边缘点云,
  45. std::vector<pcl::PointXYZ>& cross_points, //输入,交叉点,
  46. cv::Mat& rst_img //输出,图片, 1280*1280
  47. );
  48. void viewer_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr, std::string&winname);
  49. void viewer_cloud(pcl::PointCloud<pcl::PointXYZRGB>::Ptr, std::string&winname);
  50. void viewer_cloud_debug(
  51. pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud,
  52. pcl::PointXYZ&p,//抓取点
  53. pcl::PointXYZ &p_ref,//分叉点
  54. pcl::PointXYZ &root_pt,
  55. std::string&winname);
  56. void viewer_cloud_cluster(pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud, std::vector<pcl::PointXYZ>cluster_center, std::string&winname);
  57. void viewer_cloud_cluster_box(
  58. pcl::PointCloud<pcl::PointXYZ>::Ptr cloud,
  59. std::vector<pcl::PointXYZ>&cluster_center,
  60. std::vector<pcl::PointXYZ>&cluster_box,
  61. std::vector<std::vector<int> >& clt_line_idx,
  62. std::string&winname);
  63. };
  64. };