|
@@ -90,8 +90,10 @@ namespace graft_cv {
|
|
|
PositionInfo& posinfo
|
|
|
)
|
|
|
{
|
|
|
- // dtype == 0, rootstock
|
|
|
- // dtype != 0, scion
|
|
|
+ // dtype == 0, scion
|
|
|
+ // dtype != 0, rootstock
|
|
|
+ // ÊäÈ룬ËëÃç--0£¬ Õèľ--1
|
|
|
+
|
|
|
if (m_raw_cloud->width * m_raw_cloud->height < 1) {
|
|
|
if (m_pLogger) {
|
|
|
stringstream buff;
|
|
@@ -107,11 +109,11 @@ namespace graft_cv {
|
|
|
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_inbox(new pcl::PointCloud<pcl::PointXYZ>);
|
|
|
pcl::CropBox<pcl::PointXYZ> box_filter;
|
|
|
m_dtype = dtype;
|
|
|
- if (dtype == 0) {
|
|
|
+ if (dtype != 0) {//rootstock
|
|
|
box_filter.setMin(Eigen::Vector4f(m_cparam.rs_grab_xmin, m_cparam.rs_grab_ymin, m_cparam.rs_grab_zmin, 1));
|
|
|
box_filter.setMax(Eigen::Vector4f(m_cparam.rs_grab_xmax, m_cparam.rs_grab_ymax, m_cparam.rs_grab_zmax, 1));
|
|
|
}
|
|
|
- else {
|
|
|
+ else {//scion
|
|
|
box_filter.setMin(Eigen::Vector4f(m_cparam.sc_grab_xmin, m_cparam.sc_grab_ymin, m_cparam.sc_grab_zmin, 1));
|
|
|
box_filter.setMax(Eigen::Vector4f(m_cparam.sc_grab_xmax, m_cparam.sc_grab_ymax, m_cparam.sc_grab_zmax, 1));
|
|
|
}
|
|
@@ -140,7 +142,7 @@ namespace graft_cv {
|
|
|
}
|
|
|
int nb_points = 20;
|
|
|
double stem_radius = m_cparam.rs_grab_stem_diameter / 2.0;
|
|
|
- if(dtype != 0){
|
|
|
+ if(dtype == 0){
|
|
|
stem_radius = m_cparam.sc_grab_stem_diameter / 2.0;
|
|
|
}
|
|
|
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ror(new pcl::PointCloud<pcl::PointXYZ>);
|
|
@@ -347,7 +349,7 @@ namespace graft_cv {
|
|
|
}
|
|
|
|
|
|
double radius = m_cparam.rs_grab_stem_diameter;
|
|
|
- if (m_dtype != 0) {
|
|
|
+ if (m_dtype == 0) {
|
|
|
radius = m_cparam.sc_grab_stem_diameter;
|
|
|
}
|
|
|
std::vector<int> counter;
|
|
@@ -382,7 +384,7 @@ namespace graft_cv {
|
|
|
//clustering
|
|
|
double d1 = m_cparam.rs_grab_stem_diameter;
|
|
|
double d2 = m_cparam.rs_grab_stem_diameter * 3.0;
|
|
|
- if (m_dtype != 0) {
|
|
|
+ if (m_dtype == 0) {
|
|
|
d1 = m_cparam.sc_grab_stem_diameter;
|
|
|
d2 = m_cparam.sc_grab_stem_diameter * 3.0;
|
|
|
}
|
|
@@ -404,6 +406,9 @@ namespace graft_cv {
|
|
|
cluster_index.push_back(idx);
|
|
|
}
|
|
|
int first_idx = std::min_element(cluster_index.begin(), cluster_index.end()) - cluster_index.begin();
|
|
|
+ if (m_dtype == 0) {
|
|
|
+ first_idx = std::max_element(cluster_index.begin(), cluster_index.end()) - cluster_index.begin();
|
|
|
+ }
|
|
|
|
|
|
first_seedling_cloud_idx.clear();
|
|
|
for (auto&v : cluster_member.at(first_idx)) {
|
|
@@ -720,7 +725,7 @@ namespace graft_cv {
|
|
|
int opt_idx = -1;
|
|
|
int member_size = 5;
|
|
|
float y_opt = m_cparam.rs_grab_y_opt;
|
|
|
- if (m_dtype != 0) {
|
|
|
+ if (m_dtype == 0) {
|
|
|
y_opt = m_cparam.sc_grab_y_opt;
|
|
|
}
|
|
|
for (int i = 0; i < in_cloud->points.size(); ++i) {
|