Răsfoiți Sursa

v0.1.18 抓取旋转180度设置,0-不旋转,非0-旋转180

chenhongjiang 1 an în urmă
părinte
comite
c1812291d2
6 a modificat fișierele cu 16 adăugiri și 5 ștergeri
  1. 2 1
      ReadMe.txt
  2. 3 2
      config.cpp
  3. 1 0
      data_def_api.h
  4. 2 1
      tcv_conf.yml
  5. 1 1
      tea_cv_api.cpp
  6. 7 0
      tea_sorter.cpp

+ 2 - 1
ReadMe.txt

@@ -15,4 +15,5 @@ v0.1.13 
 v0.1.14 优化抓取角度效率: thinning采用降采样再放大,提高效率;只做一次thinning,记录目标点坐标备用
 v0.1.15 优化切割位置识别精度: 初步识别点在目标内时用识别点;否则垂线方向搜索最近点作为切割点(适用于苗弯曲)
 v0.1.16 抓取、切割识别结果大于0则返回正常
-v0.1.17 抓取增加搜索范围-50度到50度
+v0.1.17 抓取增加搜索范围-50度到50度
+v0.1.18 抓取旋转180度设置,0-不旋转,非0-旋转180

+ 3 - 2
config.cpp

@@ -35,6 +35,7 @@ namespace graft_cv{
 			<< "min_distance_grab" << m_cparam->min_distance_grab
 			<< "min_area_ratio_grab" << m_cparam->min_area_ratio_grab
 			<< "max_area_ratio_grab" << m_cparam->max_area_ratio_grab
+			<< "rot_degree_grab" << m_cparam->rot_degree_grab
 
 			<< "model_path_cut" << m_cparam->model_path_cut
 			<< "object_threshold_cut" << m_cparam->object_threshold_cut
@@ -67,7 +68,7 @@ namespace graft_cv{
 		m_cparam->min_distance_grab = (double)node["min_distance_grab"];
 		m_cparam->min_area_ratio_grab = (double)node["min_area_ratio_grab"];
 		m_cparam->max_area_ratio_grab = (double)node["max_area_ratio_grab"];
-
+        m_cparam->rot_degree_grab = (double)node["rot_degree_grab"];
 		
 		m_cparam->model_path_cut = (string)node["model_path_cut"];
 		m_cparam->object_threshold_cut = (float)node["object_threshold_cut"];
@@ -102,7 +103,7 @@ namespace graft_cv{
 			<< "min_distance_grab:\t" << m_cparam->min_distance_grab << endl
 			<< "min_area_ratio_grab:\t" << m_cparam->min_area_ratio_grab << endl
 			<< "max_area_ratio_grab:\t" << m_cparam->max_area_ratio_grab << endl
-
+            << "rot_degree_grab:\t" << m_cparam->rot_degree_grab << endl
 
 			<< "model_path_cut:\t" << m_cparam->model_path_cut << endl
 			<< "object_threshold_cut:\t" << m_cparam->object_threshold_cut << endl

+ 1 - 0
data_def_api.h

@@ -28,6 +28,7 @@ typedef struct{
 	double min_distance_grab;//抓取两个目标最小中心距离,像素距离
 	double min_area_ratio_grab; //识别目标最小面积比率,最小面积和整个图的面积比
 	double max_area_ratio_grab; //识别目标最大面积比率,最大面积和整个图的面积比
+	double rot_degree_grab;
 
 	std::string model_path_cut;
 	float object_threshold_cut;

+ 2 - 1
tcv_conf.yml

@@ -12,10 +12,11 @@ conf_parameters:
    grid_row_grab: 2
    grid_col_grab: 3
    grid_padding_grab: 100
-   offset_grab: 230
+   offset_grab: 330
    min_distance_grab: 501.
    min_area_ratio_grab: 0.0
    max_area_ratio_grab: 0.1
+   rot_degree_grab: 180
    model_path_cut: "D:/projects/graft/py_code/retina_tea5/TeaDetector_cut_20231203001648.onnx"
    object_threshold_cut: 0.8
    nms_threshold_cut: 0.1

+ 1 - 1
tea_cv_api.cpp

@@ -18,7 +18,7 @@ extern CRITICAL_SECTION g_cs;
 namespace graft_cv
 {
 
-	char *g_version_str = "0.1.17";
+	char *g_version_str = "0.1.18";
 
 	//configure
 	string g_conf_file = "./tcv_conf.yml";	

+ 7 - 0
tea_sorter.cpp

@@ -500,6 +500,13 @@ int CTeaSort::load_data(
 
 		m_raw_img = img.clone();
 	}
+	if(m_dtype == img_type::tea_grab){
+		double rot = m_cp.rot_degree_grab;
+		if(fabs(rot)>1.0e-3){
+			//rotate image
+			cv::rotate(m_raw_img, m_raw_img,ROTATE_180);
+		}
+	}
 	//image saver
 	if (m_ppImgSaver && *m_ppImgSaver) {
 		(*m_ppImgSaver)->saveImage(m_raw_img, m_imgId);