Explorar o código

v0.1.21 切割图片是彩色图,app提供的通道顺序是rgb,改成opencv用的bgr

chenhongjiang hai 1 ano
pai
achega
e1a911f8f5
Modificáronse 4 ficheiros con 19 adicións e 2 borrados
  1. 2 1
      ReadMe.txt
  2. 1 1
      tea_cv_api.cpp
  3. 15 0
      tea_sorter.cpp
  4. 1 0
      tea_sorter.h

+ 2 - 1
ReadMe.txt

@@ -18,4 +18,5 @@ v0.1.16 抓取
 v0.1.17 抓取增加搜索范围-50度到50度
 v0.1.18 抓取旋转180度设置,0-不旋转,非0-旋转180
 v0.1.19 抓取旋转180度设置, 标定
-v0.1.20 切割位置识别min_x未定义就使用bug修改
+v0.1.20 切割位置识别min_x未定义就使用bug修改
+v0.1.21 切割图片是彩色图,app提供的通道顺序是rgb,改成opencv用的bgr

+ 1 - 1
tea_cv_api.cpp

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

+ 15 - 0
tea_sorter.cpp

@@ -507,6 +507,9 @@ int CTeaSort::load_data(
 			cv::rotate(m_raw_img, m_raw_img,ROTATE_180);
 		}
 	}
+	if (m_raw_img.channels() == 3 && m_dtype == img_type::tea_cut) {
+		img_rgb2bgr(m_raw_img);
+	}
 	//image saver
 	if (m_ppImgSaver && *m_ppImgSaver) {
 		(*m_ppImgSaver)->saveImage(m_raw_img, m_imgId);
@@ -520,6 +523,18 @@ int CTeaSort::load_data(
 	return rst;
 }
 
+void CTeaSort::img_rgb2bgr(cv::Mat&img) {
+	assert(img.channels() == 3);
+	unsigned char pixel = 0;
+	for (int r = 0; r < img.rows; ++r) {
+		unsigned char* pRow = img.ptr(r);
+		for (int c = 0; c < img.cols; ++c) {
+			pixel = pRow[c*img.channels()];
+			pRow[c*img.channels()] = pRow[c*img.channels() + 2];
+			pRow[c*img.channels() + 2] = pixel;
+		}
+	}
+}
 
 int CTeaSort::load_model()
 {

+ 1 - 0
tea_sorter.h

@@ -40,6 +40,7 @@ namespace graft_cv{
 		ImgInfo* m_pImginfoRaw;
 		ImgInfo* m_pImginfoDetected; 
 
+		void img_rgb2bgr(cv::Mat&img);
 		int generate_detect_windows(vector<Rect>&boxes);
 		int detect_impl(cv::Mat& img, vector<Rect>&drop_regions, vector<Bbox> &droplets_raw);
 		void clear_imginfo();