From e9ada7a26647a3fc5820b525e1a4071cce51a4f4 Mon Sep 17 00:00:00 2001 From: TG <905865530@qq.com> Date: Sun, 30 Jun 2024 16:19:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E7=A9=BA=E6=9E=9C?= =?UTF-8?q?=E6=8B=96=E5=88=A4=E5=88=AB=E6=97=B6=E5=88=BB=EF=BC=8C=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=B8=80=E4=B8=AA=E6=9E=9C=E5=AD=90=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E6=B1=87=E6=80=BB=E6=8C=87=E6=A0=87=E4=BF=A1=E6=81=AF=E5=90=8E?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=88=A4=E5=88=AB=EF=BC=9B=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E4=BD=95=E5=B7=A5=E7=A1=AE=E5=AE=9A=EF=BC=8C=E7=9B=B4=E5=BE=84?= =?UTF-8?q?=E4=BB=A5=E9=95=BF=E5=BE=84=E4=B8=BA=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/supermachine--tomato-passion_fruit.iml | 23 ++++++++ 20240529RGBtest3/classifer.py | 58 +++++++++++++------- 20240529RGBtest3/main.py | 16 +++++- 20240529RGBtest3/qt_test.py | 4 +- 4 files changed, 77 insertions(+), 24 deletions(-) diff --git a/.idea/supermachine--tomato-passion_fruit.iml b/.idea/supermachine--tomato-passion_fruit.iml index 5ad5e2b..aab2221 100644 --- a/.idea/supermachine--tomato-passion_fruit.iml +++ b/.idea/supermachine--tomato-passion_fruit.iml @@ -3,6 +3,29 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/20240529RGBtest3/classifer.py b/20240529RGBtest3/classifer.py index 9e4dd11..70abbdd 100644 --- a/20240529RGBtest3/classifer.py +++ b/20240529RGBtest3/classifer.py @@ -590,16 +590,19 @@ class Data_processing: # 将处理后的图像转换为 RGB 格式 rp = cv2.cvtColor(nogreen, cv2.COLOR_BGR2RGB) #直径单位为cm - diameter = (long_axis + short_axis) * setting.pixel_length_ratio / 2 + # diameter = (long_axis + short_axis) * setting.pixel_length_ratio / 2 + #20240628与何工确定直径以长径为准 + diameter = long_axis * setting.pixel_length_ratio # print(f'直径:{diameter}') - # 如果直径小于3,判断为空果拖异常图,则将所有值重置为0 - if diameter < 2.5: - diameter = 0 - green_percentage = 0 - number_defects = 0 - total_pixels = 0 - rp = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), - dtype=np.uint8), cv2.COLOR_BGR2RGB) + ###异常判断改为发送结果前进行判断 + # # 如果直径小于3,判断为空果拖异常图,则将所有值重置为0 + # if diameter < 2.5: + # diameter = 0 + # green_percentage = 0 + # number_defects = 0 + # total_pixels = 0 + # rp = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), + # dtype=np.uint8), cv2.COLOR_BGR2RGB) return diameter, green_percentage, number_defects, total_pixels, rp def analyze_passion_fruit(self, img): @@ -639,16 +642,17 @@ class Data_processing: org_defect = pf.bitwise_and_rgb_with_binary(edge, max_mask) rp = cv2.cvtColor(org_defect, cv2.COLOR_BGR2RGB) #直径单位为cm - diameter = (long_axis + short_axis) * setting.pixel_length_ratio / 2 + # diameter = (long_axis + short_axis) * setting.pixel_length_ratio / 2 + diameter = long_axis * setting.pixel_length_ratio # print(f'直径:{diameter}') - if diameter < 2.5: - diameter = 0 - green_percentage = 0 - weight = 0 - number_defects = 0 - total_pixels = 0 - rp = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), - dtype=np.uint8), cv2.COLOR_BGR2RGB) + # if diameter < 2.5: + # diameter = 0 + # green_percentage = 0 + # weight = 0 + # number_defects = 0 + # total_pixels = 0 + # rp = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), + # dtype=np.uint8), cv2.COLOR_BGR2RGB) return diameter, green_percentage, weight, number_defects, total_pixels, rp def process_data(seif, cmd: str, images: list, spec: any, pipe: Pipe, detector: Spec_predict) -> bool: @@ -699,6 +703,14 @@ class Data_processing: if cmd == 'TO': brix = 0 weight = 0 + # 如果直径小于3,判断为空果拖异常图,则将所有值重置为0 + if diameter < 3: + diameter = 0 + gp = 0 + max_defect_num = 0 + max_total_defect_area = 0 + rp_result = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), + dtype=np.uint8), cv2.COLOR_BGR2RGB) # print(f'预测的brix值为:{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{gp};' # f' 预测的缺陷数量为:{max_defect_num}; 预测的总缺陷面积为:{max_total_defect_area};') response = pipe.send_data(cmd=cmd, brix=brix, diameter=diameter, green_percentage=gp, weight=weight, @@ -706,8 +718,16 @@ class Data_processing: return response elif cmd == 'PF': brix = detector.predict(spec) - if diameter == 0: + # 如果直径小于2.5,判断为空果拖异常图,则将所有值重置为0 + if diameter < 2.5: brix = 0 + diameter = 0 + gp= 0 + weight = 0 + max_defect_num = 0 + max_total_defect_area = 0 + rp_result = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), + dtype=np.uint8), cv2.COLOR_BGR2RGB) # print(f'预测的brix值为:{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{green_percentage};' # f' 预测的缺陷数量为:{max_defect_num}; 预测的总缺陷面积为:{max_total_defect_area};') response = pipe.send_data(cmd=cmd, brix=brix, green_percentage=gp, diameter=diameter, weight=weight, diff --git a/20240529RGBtest3/main.py b/20240529RGBtest3/main.py index 28b54f4..f942fdc 100644 --- a/20240529RGBtest3/main.py +++ b/20240529RGBtest3/main.py @@ -6,6 +6,9 @@ import sys import os + +import cv2 + from root_dir import ROOT_DIR from classifer import Spec_predict, Data_processing # from classifer import ImageClassifier @@ -54,13 +57,15 @@ def main(is_debug=False): if cmd == 'YR': break #主循环 - # q = 1 + q = 1 while True: #RGB图像部分 # start_time = time.time() images = [] cmd = None - for _ in range(5): + #三个相机产生5张图,qt发送方顺序为上方相机3张,左右相机各1张 + #实际使用时,并未对最后两张两侧相机所得结果进行统计,因此也可改为3(qt发送方顺序为上方相机3张) + for i in range(5): # start_time1 = time.time() data = pipe.receive_rgb_data(rgb_receive) # end_time10 = time.time() @@ -68,6 +73,11 @@ def main(is_debug=False): # start_time11 = time.time() cmd, img = pipe.parse_img(data) + #接收到的图像保存本地 + # img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) + # # cv2.imwrite(f'./{q}_{i}.bmp', img) + # img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + # end_time1 = time.time() # print(f'解析第{q}组第{i}份RGB数据时间:{(end_time1 - start_time11) * 1000}毫秒') # print(f'接收第{q}组第{i}张RGB图时间:{(end_time1 - start_time1) * 1000}毫秒') @@ -115,7 +125,7 @@ def main(is_debug=False): # end_time = time.time() # print(f'第{q}组全流程时间:{(end_time - start_time) * 1000}毫秒') - # q += 1 + q += 1 if __name__ == '__main__': ''' diff --git a/20240529RGBtest3/qt_test.py b/20240529RGBtest3/qt_test.py index 51e4e68..a23242b 100644 --- a/20240529RGBtest3/qt_test.py +++ b/20240529RGBtest3/qt_test.py @@ -69,8 +69,8 @@ class MainWindow(QMainWindow): :param image_dir: bmp和raw文件所在文件夹 :return: ''' - rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith(('.bmp'))][:5] - spec_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith('.raw')][:1] + rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith(('.bmp'))][:20] + spec_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith('.raw')][:5] self.send_YR() for _ in range(5):