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 0000000..0d54ade Binary files /dev/null and b/20240529RGBtest3/测试1.png differ diff --git a/20240529RGBtest3/测试2.png b/20240529RGBtest3/测试2.png new file mode 100644 index 0000000..1ec0151 Binary files /dev/null and b/20240529RGBtest3/测试2.png differ