mirror of
https://github.com/NanjingForestryUniversity/supermachine--tomato-passion_fruit.git
synced 2025-11-09 14:54:07 +00:00
fix:修复百香果模型在处理空果拖时gp计算分母可能为0的问题
This commit is contained in:
parent
f10aee7753
commit
0d10cf5d23
@ -373,6 +373,7 @@ class Spec_predict(object):
|
|||||||
self.model = model_dic
|
self.model = model_dic
|
||||||
self.log.log(f'Model loaded successfully from {path}')
|
self.log.log(f'Model loaded successfully from {path}')
|
||||||
|
|
||||||
|
|
||||||
def predict(self, data_x):
|
def predict(self, data_x):
|
||||||
'''
|
'''
|
||||||
预测数据
|
预测数据
|
||||||
@ -381,7 +382,7 @@ class Spec_predict(object):
|
|||||||
'''
|
'''
|
||||||
# 对数据进行切片,筛选谱段
|
# 对数据进行切片,筛选谱段
|
||||||
#qt_test进行测试时如果读取的是(30,30,224)需要解开注释进行数据切片,筛选谱段
|
#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_x = data_x.reshape(-1, setting.n_spec_rows * setting.n_spec_cols * setting.n_spec_bands)
|
||||||
data_y = self.model.predict(data_x)
|
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(fore_g_r_t == 255))
|
||||||
# print(np.sum(mask == 255))
|
# print(np.sum(mask == 255))
|
||||||
# print(np.sum(fore_g_r_t == 255) / 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)
|
if np.sum(mask == 255) == 0:
|
||||||
green_percentage = round(green_percentage, 2)
|
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)
|
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)
|
fore = pf.bitwise_and_rgb_with_binary(img, contour_mask)
|
||||||
mask = pf.extract_green_pixels_cv(fore)
|
mask = pf.extract_green_pixels_cv(fore)
|
||||||
green_img = pf.pixel_comparison(defect, mask)
|
green_img = pf.pixel_comparison(defect, mask)
|
||||||
green_percentage = np.sum(green_img == 255) / np.sum(contour_mask == 255)
|
if np.sum(contour_mask == 255) == 0:
|
||||||
green_percentage = round(green_percentage, 2)
|
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)
|
long_axis, short_axis = self.analyze_ellipse(contour_mask)
|
||||||
#重量单位为g,加上了一点随机数
|
#重量单位为g,加上了一点随机数
|
||||||
weight_real = self.weight_estimates(long_axis, short_axis)
|
weight_real = self.weight_estimates(long_axis, short_axis)
|
||||||
|
|||||||
@ -31,8 +31,8 @@ def main(is_debug=False):
|
|||||||
dp = Data_processing()
|
dp = Data_processing()
|
||||||
print('系统初始化中...')
|
print('系统初始化中...')
|
||||||
#模型预热
|
#模型预热
|
||||||
#与qt_test测试时需要注释掉预热,模型接收尺寸为(25,30,13),qt_test发送的数据为(30,30,224),需要对数据进行切片(classifer.py第352行)
|
#与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))
|
# _ = 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))
|
# _ = 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_tomato(cv2.imread(str(setting.tomato_img_dir)))
|
||||||
# _, _, _, _, _ = dp.analyze_passion_fruit(cv2.imread(str(setting.passion_fruit_img_dir))
|
# _, _, _, _, _ = dp.analyze_passion_fruit(cv2.imread(str(setting.passion_fruit_img_dir))
|
||||||
|
|||||||
@ -89,7 +89,7 @@ class MainWindow(QMainWindow):
|
|||||||
img_data = img.tobytes()
|
img_data = img.tobytes()
|
||||||
length = (len(img_data) + 6).to_bytes(4, byteorder='big')
|
length = (len(img_data) + 6).to_bytes(4, byteorder='big')
|
||||||
# cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据
|
# cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据
|
||||||
cmd = 'TO'
|
cmd = 'PF'
|
||||||
data_send = length + cmd.upper().encode('ascii') + height + width + img_data
|
data_send = length + cmd.upper().encode('ascii') + height + width + img_data
|
||||||
win32file.WriteFile(self.rgb_send, data_send)
|
win32file.WriteFile(self.rgb_send, data_send)
|
||||||
print(f'发送的图像数据长度: {len(data_send)}')
|
print(f'发送的图像数据长度: {len(data_send)}')
|
||||||
@ -112,7 +112,7 @@ class MainWindow(QMainWindow):
|
|||||||
bands = bands.to_bytes(2, byteorder='big')
|
bands = bands.to_bytes(2, byteorder='big')
|
||||||
length = (len(spec_data)+8).to_bytes(4, byteorder='big')
|
length = (len(spec_data)+8).to_bytes(4, byteorder='big')
|
||||||
# cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据
|
# cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据
|
||||||
cmd = 'TO'
|
cmd = 'PF'
|
||||||
data_send = length + cmd.upper().encode('ascii') + heigth + weight + bands + spec_data
|
data_send = length + cmd.upper().encode('ascii') + heigth + weight + bands + spec_data
|
||||||
win32file.WriteFile(self.spec_send, data_send)
|
win32file.WriteFile(self.spec_send, data_send)
|
||||||
print(f'发送的光谱数据长度: {len(data_send)}')
|
print(f'发送的光谱数据长度: {len(data_send)}')
|
||||||
|
|||||||
BIN
20240529RGBtest3/测试1.png
Normal file
BIN
20240529RGBtest3/测试1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
20240529RGBtest3/测试2.png
Normal file
BIN
20240529RGBtest3/测试2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Loading…
Reference in New Issue
Block a user