From 0d10cf5d23156b84452e242e41430487edd250a2 Mon Sep 17 00:00:00 2001 From: TG <905865530@qq.com> Date: Thu, 27 Jun 2024 09:36:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E7=99=BE=E9=A6=99?= =?UTF-8?q?=E6=9E=9C=E6=A8=A1=E5=9E=8B=E5=9C=A8=E5=A4=84=E7=90=86=E7=A9=BA?= =?UTF-8?q?=E6=9E=9C=E6=8B=96=E6=97=B6gp=E8=AE=A1=E7=AE=97=E5=88=86?= =?UTF-8?q?=E6=AF=8D=E5=8F=AF=E8=83=BD=E4=B8=BA0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 20240529RGBtest3/classifer.py | 17 ++++++++++++----- 20240529RGBtest3/main.py | 4 ++-- 20240529RGBtest3/qt_test.py | 4 ++-- 20240529RGBtest3/测试1.png | Bin 0 -> 11354 bytes 20240529RGBtest3/测试2.png | Bin 0 -> 11318 bytes 5 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 20240529RGBtest3/测试1.png create mode 100644 20240529RGBtest3/测试2.png diff --git a/20240529RGBtest3/classifer.py b/20240529RGBtest3/classifer.py index 306135f..a2853ff 100644 --- a/20240529RGBtest3/classifer.py +++ b/20240529RGBtest3/classifer.py @@ -373,6 +373,7 @@ class Spec_predict(object): self.model = model_dic self.log.log(f'Model loaded successfully from {path}') + def predict(self, data_x): ''' 预测数据 @@ -381,7 +382,7 @@ class Spec_predict(object): ''' # 对数据进行切片,筛选谱段 #qt_test进行测试时如果读取的是(30,30,224)需要解开注释进行数据切片,筛选谱段 - # data_x = data_x[ :25, :, setting.selected_bands ] + data_x = data_x[ :25, :, setting.selected_bands ] # 将筛选后的数据重塑为二维数组,每行代表一个样本 data_x = data_x.reshape(-1, setting.n_spec_rows * setting.n_spec_cols * setting.n_spec_bands) data_y = self.model.predict(data_x) @@ -574,8 +575,11 @@ class Data_processing: # print(np.sum(fore_g_r_t == 255)) # print(np.sum(mask == 255)) # print(np.sum(fore_g_r_t == 255) / np.sum(mask == 255)) - green_percentage = np.sum(fore_g_r_t == 255) / np.sum(mask == 255) - green_percentage = round(green_percentage, 2) + if np.sum(mask == 255) == 0: + green_percentage = 0 + else: + green_percentage = np.sum(fore_g_r_t == 255) / np.sum(mask == 255) + green_percentage = round(green_percentage, 2) # 获取西红柿的尺寸信息 long_axis, short_axis = self.analyze_ellipse(mask) # 获取缺陷信息 @@ -616,8 +620,11 @@ class Data_processing: fore = pf.bitwise_and_rgb_with_binary(img, contour_mask) mask = pf.extract_green_pixels_cv(fore) green_img = pf.pixel_comparison(defect, mask) - green_percentage = np.sum(green_img == 255) / np.sum(contour_mask == 255) - green_percentage = round(green_percentage, 2) + if np.sum(contour_mask == 255) == 0: + green_percentage = 0 + else: + green_percentage = np.sum(green_img == 255) / np.sum(contour_mask == 255) + green_percentage = round(green_percentage, 2) long_axis, short_axis = self.analyze_ellipse(contour_mask) #重量单位为g,加上了一点随机数 weight_real = self.weight_estimates(long_axis, short_axis) diff --git a/20240529RGBtest3/main.py b/20240529RGBtest3/main.py index 018028f..0be2577 100644 --- a/20240529RGBtest3/main.py +++ b/20240529RGBtest3/main.py @@ -31,8 +31,8 @@ def main(is_debug=False): dp = Data_processing() print('系统初始化中...') #模型预热 - #与qt_test测试时需要注释掉预热,模型接收尺寸为(25,30,13),qt_test发送的数据为(30,30,224),需要对数据进行切片(classifer.py第352行) - _ = detector.predict(np.ones((setting.n_spec_rows, setting.n_spec_cols, setting.n_spec_bands), dtype=np.uint16)) + #与qt_test测试时需要注释掉预热,模型接收尺寸为(25,30,13),qt_test发送的数据为(30,30,224),需要对数据进行切片(classifer.py第385行) + # _ = detector.predict(np.ones((setting.n_spec_rows, setting.n_spec_cols, setting.n_spec_bands), dtype=np.uint16)) # _ = classifier.predict(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), dtype=np.uint8)) # _, _, _, _, _ =dp.analyze_tomato(cv2.imread(str(setting.tomato_img_dir))) # _, _, _, _, _ = dp.analyze_passion_fruit(cv2.imread(str(setting.passion_fruit_img_dir)) diff --git a/20240529RGBtest3/qt_test.py b/20240529RGBtest3/qt_test.py index 108b6dd..51e4e68 100644 --- a/20240529RGBtest3/qt_test.py +++ b/20240529RGBtest3/qt_test.py @@ -89,7 +89,7 @@ class MainWindow(QMainWindow): img_data = img.tobytes() length = (len(img_data) + 6).to_bytes(4, byteorder='big') # cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据 - cmd = 'TO' + cmd = 'PF' data_send = length + cmd.upper().encode('ascii') + height + width + img_data win32file.WriteFile(self.rgb_send, data_send) print(f'发送的图像数据长度: {len(data_send)}') @@ -112,7 +112,7 @@ class MainWindow(QMainWindow): bands = bands.to_bytes(2, byteorder='big') length = (len(spec_data)+8).to_bytes(4, byteorder='big') # cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据 - cmd = 'TO' + cmd = 'PF' data_send = length + cmd.upper().encode('ascii') + heigth + weight + bands + spec_data win32file.WriteFile(self.spec_send, data_send) print(f'发送的光谱数据长度: {len(data_send)}') diff --git a/20240529RGBtest3/测试1.png b/20240529RGBtest3/测试1.png new file mode 100644 index 0000000000000000000000000000000000000000..0d54ade6c805cdb49543fbddcdd8f29cb81a643a GIT binary patch literal 11354 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 aXx#}#Ur38LY#8wuLQ6yER=JvW*na?*Jox4S literal 0 HcmV?d00001