feat:新增20240627test4为现场部署版本的测试版(包含传统方法、实例分割、目标检测、图像分类多个模型)

fix:修复在20240627test4中的classifier.py的analyze_tomato函数中white_defect的函数忘记传递两个阈值量的错误;修复analyze_tomato函数中的叶片实例分割存在的问题,解决由于变量污染引起的分割错误;
This commit is contained in:
TG 2024-07-21 22:17:46 +08:00
parent e5692c795e
commit 242bb9a71b
112 changed files with 1257 additions and 382 deletions

20
.gitignore vendored
View File

@ -90,12 +90,16 @@ fabric.properties
!/20240410RGBtest1/super-tomato/defect_mask.bmp !/20240410RGBtest1/super-tomato/defect_mask.bmp
!/20240410RGBtest1/super-tomato/prediction.png !/20240410RGBtest1/super-tomato/prediction.png
/20240529RGBtest3/data/ /20240529RGBtest3/data/
/20240627Actual_deployed/.idea/ /20240627test4/.idea/
/20240627Actual_deployed/qt_test/ /20240627test4/qt_test/
/20240627Actual_deployed/封装exe/ /20240627test4/封装exe/
/20240627Actual_deployed/qt_test/ /20240627test4/qt_test/
/20240627Actual_deployed/qt_test/PF/ /20240627test4/qt_test/PF/
/20240627Actual_deployed/image/ /20240627test4/image/
/20240627Actual_deployed/pfzc/ /20240627test4/pfzc/
/20240627Actual_deployed/pfzz/ /20240627test4/pfzz/
/20240529RGBtest3/原图108测试过程图/ /20240529RGBtest3/原图108测试过程图/
/20240627test4/20240718test/
/20240627test4/testimg_result/
/20240627test4/zz_test/
/20240627test4/误识别测试20240714/

View File

@ -3,29 +3,29 @@
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.idea/copilot/chatSessions" /> <excludeFolder url="file://$MODULE_DIR$/.idea/copilot/chatSessions" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/data_pyc" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/data_pyc" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/cv2/gapi" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/cv2/gapi" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/cv2/mat_wrapper" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/cv2/mat_wrapper" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/cv2/misc" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/cv2/misc" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/cv2/utils" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/cv2/utils" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/numpy/.libs" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/numpy/.libs" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/numpy/fft" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/numpy/fft" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/scipy/_lib/_uarray" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/scipy/_lib/_uarray" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/scipy/fft" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/scipy/fft" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/scipy/ndimage" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/scipy/ndimage" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/scipy/optimize/_highs" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/scipy/optimize/_highs" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/scipy/sparse/linalg/_eigen" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/scipy/sparse/linalg/_eigen" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/scipy/spatial/transform" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/scipy/spatial/transform" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/scipy/stats/_levy_stable" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/scipy/stats/_levy_stable" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/scipy/stats/_unuran" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/scipy/stats/_unuran" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/sklearn/_loss" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/sklearn/_loss" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/sklearn/datasets/tests/data/openml/id_40945" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/sklearn/datasets/tests/data/openml/id_40945" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main0带资源文件/_internal/sklearn/preprocessing" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main0带资源文件/_internal/sklearn/preprocessing" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main1不带资源文件夹使用原始py文件" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main1不带资源文件夹使用原始py文件" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main3不带资源文件夹使用pyc文件修改log不报空果托错误信息换图标" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main3不带资源文件夹使用pyc文件修改log不报空果托错误信息换图标" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main4设置与main3一致去掉了resnet权重" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main4设置与main3一致去掉了resnet权重" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main5与main1一致py文件使用20240529RGBtest3的main" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main5与main1一致py文件使用20240529RGBtest3的main" />
<excludeFolder url="file://$MODULE_DIR$/20240627Actual_deployed/封装exe/result/main6不带资源文件夹py文件使用20240529RGBtest3配置文件加载的是生成的pyc文件" /> <excludeFolder url="file://$MODULE_DIR$/20240627test4/封装exe/result/main6不带资源文件夹py文件使用20240529RGBtest3配置文件加载的是生成的pyc文件" />
</content> </content>
<orderEntry type="jdk" jdkName="tengg" jdkType="Python SDK" /> <orderEntry type="jdk" jdkName="tengg" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />

View File

@ -1,7 +0,0 @@
joblib==1.2.0
numpy==1.25.0
Pillow==9.4.0
pywin32==305
scikit_learn==1.2.2
opencv-python==4.6.0.66
scikit-learn==1.2.2

View File

@ -1,166 +0,0 @@
2024-06-28 11:30:05,483 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:35:36,240 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:36:24,181 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:51:27,970 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-28 11:51:27,971 main.py[line:82] - ERROR - 处理失败
2024-06-28 11:51:27,977 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:55:18,328 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:59:41,747 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:03:47,921 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-28 12:03:47,922 main.py[line:82] - ERROR - 处理失败
2024-06-28 12:03:47,922 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:06:28,421 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:12:04,287 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:14:07,667 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:15:23,671 utils.py[line:101] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:17:16,305 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:18:43,577 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:20:46,118 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:22:39,747 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:26:07,385 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 14:52:26,065 utils.py[line:101] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 14:55:54,058 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 14:56:51,979 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:18:10,133 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:20:59,777 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:23:38,138 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:31:44,479 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:48:30,938 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:03:04,564 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:07:31,464 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:25:01,278 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:29:57,905 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:49:10,627 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:50:30,739 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:52:40,850 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:01:43,963 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:05:56,524 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:09:33,282 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:12:01,788 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:13:27,639 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:20:43,034 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 15:43:42,727 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 15:52:02,852 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:08:30,885 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:21:17,909 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:31:42,830 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-29 16:31:42,831 main.py[line:92] - ERROR - 处理失败
2024-06-29 16:31:42,831 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:35:42,748 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:44:57,631 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:49:04,069 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:53:18,366 utils.py[line:158] - ERROR - 图像指令转换失败,数据长度错误
2024-06-29 17:17:24,471 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 17:44:57,312 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 17:48:31,343 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-29 17:48:31,344 main.py[line:95] - ERROR - 处理失败
2024-06-29 17:48:31,344 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 17:52:27,224 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 18:40:34,394 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-29 18:40:34,395 main.py[line:95] - ERROR - 处理失败
2024-06-29 18:40:34,395 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 12:45:15,007 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 12:57:37,170 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 13:01:35,413 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 14:14:42,010 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 14:24:06,845 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 14:35:07,953 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 15:27:37,749 utils.py[line:161] - ERROR - 图像指令转换失败,数据长度错误
2024-07-01 16:23:59,608 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 16:27:39,666 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 16:45:20,986 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 16:49:36,061 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 16:57:25,351 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:01:32,692 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:22:45,049 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:25:23,065 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-01 17:25:23,065 main.py[line:101] - ERROR - 处理失败
2024-07-01 17:25:23,065 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:27:39,278 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:29:37,321 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:31:32,282 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:33:22,204 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:35:32,399 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:46:20,681 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:47:51,507 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:51:45,559 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-01 17:51:45,559 main.py[line:101] - ERROR - 处理失败
2024-07-01 17:51:45,560 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 14:08:48,265 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 14:08:48,265 main.py[line:108] - ERROR - 处理失败
2024-07-04 14:08:49,453 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 14:08:49,453 main.py[line:108] - ERROR - 处理失败
2024-07-04 14:08:50,744 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 14:08:50,744 main.py[line:108] - ERROR - 处理失败
2024-07-04 14:08:50,744 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 14:27:19,068 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:41:47,465 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:45:24,931 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:49:02,620 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:51:48,679 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:53:58,252 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 17:00:49,493 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 17:08:10,792 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:10,793 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:12,041 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:12,042 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:13,179 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:13,179 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:14,424 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:14,425 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:15,606 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:15,606 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:16,934 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:16,934 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:18,134 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:18,134 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:19,383 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:19,383 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:20,639 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:20,639 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:21,809 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:21,809 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:21,810 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 17:18:14,994 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 17:20:39,388 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:39,388 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:40,562 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:40,563 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:41,738 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:41,738 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:43,017 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:43,017 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:44,275 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:44,275 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:45,548 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:45,548 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:46,743 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:46,743 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:47,987 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:47,987 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:49,183 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:49,183 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:50,393 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:50,394 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:51,724 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:51,724 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:52,901 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:52,901 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:54,161 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:54,161 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:55,332 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:55,333 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:56,561 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:56,561 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:56,561 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-05 14:23:17,274 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-05 14:52:48,462 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-05 14:59:25,432 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-05 14:59:25,433 main.py[line:110] - ERROR - 处理失败
2024-07-05 14:59:25,433 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-05 15:21:42,677 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 16:11:16,751 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 16:11:16,752 main.py[line:125] - ERROR - 处理失败
2024-07-07 16:11:16,752 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 16:25:38,533 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 16:34:38,764 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')

View File

@ -1,45 +0,0 @@
# -*- coding: utf-8 -*-
# @Time : 2024/7/7 下午4:33
# @Author : TG
# @File : totest.py
# @Software: PyCharm
import time
from detector import Detector_to
import numpy as np
import os
from PIL import Image
def main():
s = []
path = r'D:\project\20240627Actual_deployed\to'
to = Detector_to()
i = 1
for filename in os.listdir(path):
if filename.endswith('.bmp'):
img_path = os.path.join(path, filename)
image = Image.open(img_path)
img = np.array(image)
t = time.time()
result = to.run(img)
e = time.time()
print(f'{i}张图时间:{e-t}')
print(f'图片名:{filename},结果:{result}')
s.append(result)
i += 1
print(f'长度:{sum(s)}')
#0为褶皱1为正常
if __name__ == '__main__':
'''
python与qt采用windows下的命名管道进行通信数据流按照约定的通信协议进行
数据处理逻辑为连续接收5张RGB图然后根据解析出的指令部分决定是否接收一张光谱图然后进行处理最后将处理得到的指标结果进行编码回传
'''
main()

View File

@ -0,0 +1,71 @@
import cv2
import numpy as np
import os
# 读取文件夹中的所有图片文件
def read_images_from_folder(folder):
images = []
for filename in os.listdir(folder):
img = cv2.imread(os.path.join(folder, filename))
if img is not None:
images.append((filename, img))
return images
# Lab颜色空间的a阈值分割同时处理灰度值大于190的像素
def threshold_lab_a_and_high_gray(image, lower_threshold=0, upper_threshold=20):
lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab)
_, a, _ = cv2.split(lab_image)
# 创建一个与a通道相同大小的黑色图像
binary_image = np.zeros_like(a)
# 将a通道中值在指定范围内的像素设置为白色255
binary_image[(a >= lower_threshold) & (a <= upper_threshold)] = 255
# 为灰度值大于190的像素创建二值图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
high_gray_image = np.zeros_like(gray_image)
high_gray_image[gray_image > 170] = 255
# 从a通道阈值图中移除灰度值大于190的像素
final_image = cv2.bitwise_and(binary_image, binary_image, mask=np.bitwise_not(high_gray_image))
return binary_image, high_gray_image, final_image
# 拼接并显示所有图片
def concatenate_images(original, images, filename, scale=0.5):
# 将所有单通道图像转换为三通道图像
resized_imgs = []
for img in images:
if len(img.shape) == 2: # 单通道图像
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
# 缩放图像
img = cv2.resize(img, (int(img.shape[1] * scale), int(img.shape[0] * scale)))
resized_imgs.append(img)
# 将原图也转换为相同大小和缩放
resized_original = cv2.resize(original, (int(original.shape[1] * scale), int(original.shape[0] * scale)))
# 水平拼接第一行和第二行
top_row = cv2.hconcat([resized_original, resized_imgs[0]])
bottom_row = cv2.hconcat([resized_imgs[1], resized_imgs[2]])
# 垂直拼接所有行
final_image = cv2.vconcat([top_row, bottom_row])
# 显示图片
cv2.imshow(f"Combined Images - {filename}", final_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
def main():
folder = r'F:\images' # 替换为你的文件夹路径
images = read_images_from_folder(folder)
for filename, image in images:
lab_thresh, high_gray, final_image = threshold_lab_a_and_high_gray(image, lower_threshold=115, upper_threshold=135)
concatenate_images(image, [lab_thresh, high_gray, final_image], filename, scale=0.5) # 添加缩放因子
if __name__ == "__main__":
main()

View File

@ -5,8 +5,6 @@
# @Software: PyCharm # @Software: PyCharm
import os import os
import time
import cv2 import cv2
import pipe_utils import pipe_utils
import joblib import joblib
@ -17,6 +15,7 @@ from pipe_utils import Pipe
from config import Config as setting from config import Config as setting
from sklearn.ensemble import RandomForestRegressor from sklearn.ensemble import RandomForestRegressor
from detector import Detector_to from detector import Detector_to
from to_seg import TOSEG
import torch import torch
import torch.nn as nn import torch.nn as nn
@ -229,6 +228,24 @@ class Tomato:
img_filled = cv2.bitwise_or(new_bin_img, img_filled_inv) img_filled = cv2.bitwise_or(new_bin_img, img_filled_inv)
return img_filled return img_filled
def threshold_lab_a_and_high_gray(self, image, lower_threshold=0, upper_threshold=20):
lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab)
_, a, _ = cv2.split(lab_image)
# 创建一个与a通道相同大小的黑色图像
binary_image = np.zeros_like(a)
# 将a通道中值在指定范围内的像素设置为白色255
binary_image[(a >= lower_threshold) & (a <= upper_threshold)] = 255
# 为灰度值大于190的像素创建二值图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
high_gray_image = np.zeros_like(gray_image)
high_gray_image[gray_image > 170] = 255
# 从a通道阈值图中移除灰度值大于190的像素
final_image = cv2.bitwise_and(binary_image, binary_image, mask=np.bitwise_not(high_gray_image))
# 颜色反转之后,找到最大的连通区域(去除背景中的噪点干扰)
final_image = self.largest_connected_component(cv2.bitwise_not(final_image))
return final_image
#百香果RGB处理模型 #百香果RGB处理模型
class Passion_fruit: class Passion_fruit:
def __init__(self, hue_value=setting.hue_value, hue_delta=setting.hue_delta, def __init__(self, hue_value=setting.hue_value, hue_delta=setting.hue_delta,
@ -331,9 +348,9 @@ class Passion_fruit:
upper_green = np.array([setting.high_H, setting.high_S, setting.high_V]) upper_green = np.array([setting.high_H, setting.high_S, setting.high_V])
# Convert the image to HSV # Convert the image to HSV
hsv = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2HSV) hsv = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2HSV)
# Create the mask # Create the leaf
mask = cv2.inRange(hsv, lower_green, upper_green) mask = cv2.inRange(hsv, lower_green, upper_green)
# Bitwise-AND mask and original image # Bitwise-AND leaf and original image
res = cv2.bitwise_and(image_rgb, image_rgb, mask=mask) res = cv2.bitwise_and(image_rgb, image_rgb, mask=mask)
# Convert result to BGR for display # Convert result to BGR for display
res_bgr = cv2.cvtColor(res, cv2.COLOR_RGB2BGR) res_bgr = cv2.cvtColor(res, cv2.COLOR_RGB2BGR)
@ -570,6 +587,9 @@ class Data_processing:
self.area_threshold = area_threshold self.area_threshold = area_threshold
self.density = density self.density = density
self.area_ratio = area_ratio self.area_ratio = area_ratio
self.tomato = Tomato()
self.pf = Passion_fruit()
self.tos = TOSEG()
pass pass
def fill_holes(self, bin_img): def fill_holes(self, bin_img):
@ -678,35 +698,47 @@ class Data_processing:
返回: 返回:
tuple: (长径, 短径, 缺陷区域个数, 缺陷区域总像素, 处理后的图像) tuple: (长径, 短径, 缺陷区域个数, 缺陷区域总像素, 处理后的图像)
""" """
tomato = Tomato() # 创建 Tomato 类的实例 # tomato = Tomato() # 创建 Tomato 类的实例
img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR) # img0 = img.copy()
s_l = tomato.extract_s_l(img) img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
thresholded_s_l = tomato.threshold_segmentation(s_l, setting.threshold_s_l) img0 = img.copy()
new_bin_img = tomato.largest_connected_component(thresholded_s_l) s_l = self.tomato.extract_s_l(img)
filled_img, defect = self.fill_holes(new_bin_img) thresholded_s_l = self.tomato.threshold_segmentation(s_l, setting.threshold_s_l)
new_bin_img = self.tomato.largest_connected_component(thresholded_s_l)
#下面为20240714工控机实际运行代码缺少两个参数传递
# white_defect = self.tomato.threshold_lab_a_and_high_gray(img)
white_defect = self.tomato.threshold_lab_a_and_high_gray(img, lower_threshold=115, upper_threshold=135)
new_bin_and_white_defect_img = cv2.bitwise_and(new_bin_img, white_defect)
filled_img, defect = self.fill_holes(new_bin_and_white_defect_img)
# 绘制西红柿边缘并获取缺陷信息 # 绘制西红柿边缘并获取缺陷信息
edge, mask = tomato.draw_tomato_edge(img, new_bin_img) edge, mask = self.tomato.draw_tomato_edge(img, new_bin_and_white_defect_img)
org_defect = tomato.bitwise_and_rgb_with_binary(edge, new_bin_img) # org_defect = self.tomato.bitwise_and_rgb_with_binary(edge, new_bin_and_white_defect_img)
fore = tomato.bitwise_and_rgb_with_binary(img, mask) fore = self.tomato.bitwise_and_rgb_with_binary(img, mask)
fore_g_r_t = tomato.threshold_segmentation(tomato.extract_g_r(fore), threshold=setting.threshold_fore_g_r_t) fore_g_r_t = self.tomato.threshold_segmentation(self.tomato.extract_g_r(fore), threshold=setting.threshold_fore_g_r_t)
filled_img_nogreen = cv2.bitwise_or(filled_img, fore_g_r_t) # filled_img_nogreen = cv2.bitwise_or(filled_img, fore_g_r_t)
res = cv2.bitwise_or(new_bin_img, fore_g_r_t)
nogreen = tomato.bitwise_and_rgb_with_binary(edge, res)
safe_area = self.tos.toseg(img0)
filled_defect = cv2.bitwise_or(filled_img, safe_area)
green = cv2.bitwise_or(fore_g_r_t, safe_area)
res = cv2.bitwise_or(new_bin_and_white_defect_img, safe_area)
nogreen = self.tomato.bitwise_and_rgb_with_binary(edge, res)
# 统计白色像素点个数 # 统计白色像素点个数
# 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))
if np.sum(mask == 255) == 0: if np.sum(mask == 255) == 0:
green_percentage = 0 green_percentage = 0
else: else:
green_percentage = np.sum(fore_g_r_t == 255) / np.sum(mask == 255) green_percentage = np.sum(green == 255) / np.sum(mask == 255)
green_percentage = round(green_percentage, 2) green_percentage = round(green_percentage, 2)
# 获取西红柿的尺寸信息 # 获取西红柿的尺寸信息
long_axis, short_axis = self.analyze_ellipse(mask) long_axis, short_axis = self.analyze_ellipse(mask)
# 获取缺陷信息 # 获取缺陷信息
_, total_pixels = self.analyze_defect(filled_img_nogreen) _, total_pixels = self.analyze_defect(filled_defect)
# print(filled_img.shape) # print(filled_img.shape)
# print(f'缺陷数量:{number_defects}; 缺陷总面积:{total_pixels}') # print(f'缺陷总面积:{total_pixels}')
# cv2.imwrite('filled_img.jpg',filled_img) # cv2.imwrite('filled_img.jpg',filled_img)
# 将处理后的图像转换为 RGB 格式 # 将处理后的图像转换为 RGB 格式
rp = cv2.cvtColor(nogreen, cv2.COLOR_BGR2RGB) rp = cv2.cvtColor(nogreen, cv2.COLOR_BGR2RGB)
@ -722,7 +754,15 @@ class Data_processing:
# total_pixels = 0 # total_pixels = 0
# rp = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), # rp = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands),
# dtype=np.uint8), cv2.COLOR_BGR2RGB) # dtype=np.uint8), cv2.COLOR_BGR2RGB)
return diameter, green_percentage, total_pixels, rp
white_defect = cv2.cvtColor(white_defect, cv2.COLOR_GRAY2RGB)
new_bin_img = cv2.cvtColor(new_bin_img, cv2.COLOR_GRAY2RGB)
new_bin_and_white_defect_img = cv2.cvtColor(new_bin_and_white_defect_img, cv2.COLOR_GRAY2RGB)
filled_img = cv2.cvtColor(filled_img, cv2.COLOR_GRAY2RGB)
safe_area = cv2.cvtColor(safe_area, cv2.COLOR_GRAY2RGB)
filled_defect = cv2.cvtColor(filled_defect, cv2.COLOR_GRAY2RGB)
return diameter, green_percentage, total_pixels, rp, white_defect, new_bin_img, new_bin_and_white_defect_img, filled_img, safe_area, filled_defect
def analyze_passion_fruit(self, img): def analyze_passion_fruit(self, img):
if img is None: if img is None:
@ -730,18 +770,18 @@ class Data_processing:
return None return None
# 创建PassionFruit类的实例 # 创建PassionFruit类的实例
pf = Passion_fruit() # pf = Passion_fruit()
img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR) img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)
hsv_image = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hsv_image = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
combined_mask = pf.create_mask(hsv_image) combined_mask = self.pf.create_mask(hsv_image)
combined_mask = pf.apply_morphology(combined_mask) combined_mask = self.pf.apply_morphology(combined_mask)
max_mask = pf.find_largest_component(combined_mask) max_mask = self.pf.find_largest_component(combined_mask)
filled_img, defect = self.fill_holes(max_mask) filled_img, defect = self.fill_holes(max_mask)
contour_mask = self.contour_process(max_mask) contour_mask = self.contour_process(max_mask)
fore = pf.bitwise_and_rgb_with_binary(img, contour_mask) fore = self.pf.bitwise_and_rgb_with_binary(img, contour_mask)
mask = pf.extract_green_pixels_cv(fore) mask = self.pf.extract_green_pixels_cv(fore)
green_img = pf.pixel_comparison(defect, mask) green_img = self.pf.pixel_comparison(defect, mask)
if np.sum(contour_mask == 255) == 0: if np.sum(contour_mask == 255) == 0:
green_percentage = 0 green_percentage = 0
else: else:
@ -758,8 +798,8 @@ class Data_processing:
_, total_pixels = self.analyze_defect(filled_img) _, total_pixels = self.analyze_defect(filled_img)
# img1 = img.copy() # img1 = img.copy()
edge = pf.draw_contours_on_image(img, contour_mask) edge = self.pf.draw_contours_on_image(img, contour_mask)
org_defect = pf.bitwise_and_rgb_with_binary(edge, max_mask) org_defect = self.pf.bitwise_and_rgb_with_binary(edge, max_mask)
rp = cv2.cvtColor(org_defect, cv2.COLOR_BGR2RGB) rp = cv2.cvtColor(org_defect, cv2.COLOR_BGR2RGB)
#直径单位为cm #直径单位为cm
# diameter = (long_axis + short_axis) * setting.pixel_length_ratio / 2 # diameter = (long_axis + short_axis) * setting.pixel_length_ratio / 2
@ -775,8 +815,8 @@ class Data_processing:
# dtype=np.uint8), cv2.COLOR_BGR2RGB) # dtype=np.uint8), cv2.COLOR_BGR2RGB)
return diameter, green_percentage, weight, total_pixels, rp return diameter, green_percentage, weight, total_pixels, rp
def process_data(seif, cmd: str, images: list, spec: any, pipe: Pipe, def process_data(seif, cmd: str, images: list, spec: any, pipe: Pipe, detector: Spec_predict,
detector: Spec_predict, to: Detector_to, impf: ImageClassifier) -> bool: to: Detector_to, impf: ImageClassifier, q) -> bool:
""" """
处理指令 处理指令
@ -795,12 +835,17 @@ class Data_processing:
for i, img in enumerate(images): for i, img in enumerate(images):
if cmd == 'TO': if cmd == 'TO':
# 番茄 # 番茄
diameter, green_percentage, total_pixels, rp = seif.analyze_tomato(img) diameter, green_percentage, total_pixels, rp, white_defect, new_bin_img, new_bin_and_white_defect_img, filled_img, safe_area, filled_defect = seif.analyze_tomato(img)
ss = time.time()
posun_num = to.run(img) posun_num = to.run(img)
es = time.time() cv2.imwrite(f'./testimg_result/{q}_{i+1}_white_defect.png', white_defect)
print(f'破损判断时间:{es-ss}') cv2.imwrite(f'./testimg_result/{q}_{i+1}_new_bin_img.png', new_bin_img)
print(f'破损判断:{posun_num}') cv2.imwrite(f'./testimg_result/{q}_{i+1}_white_defect.png', new_bin_and_white_defect_img)
cv2.imwrite(f'./testimg_result/{q}_{i+1}_filled_img.png', filled_img)
cv2.imwrite(f'./testimg_result/{q}_{i+1}_filled_defect.png', filled_defect)
cv2.imwrite(f'./testimg_result/{q}_{i+1}_safe_area.png', safe_area)
cv2.imwrite(f'./testimg_result/{q}_{i+1}_nogreen.png', cv2.cvtColor(rp, cv2.COLOR_RGB2BGR))
cv2.imwrite(f'./testimg_result/{q}_{i+1}_img.png', cv2.cvtColor(img, cv2.COLOR_RGB2BGR))
# print(f'破损判断:{posun_num}')
if i <= 2: if i <= 2:
diameter_axis_list.append(diameter) diameter_axis_list.append(diameter)
ps.append(posun_num) ps.append(posun_num)
@ -841,8 +886,8 @@ class Data_processing:
max_total_defect_area = 0 max_total_defect_area = 0
rp_result = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), rp_result = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands),
dtype=np.uint8), cv2.COLOR_BGR2RGB) dtype=np.uint8), cv2.COLOR_BGR2RGB)
print(f'预测的brix值为{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{gp};' # print(f'预测的brix值为{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{gp};'
f' 破损判别结果为:{ps_sum}; 预测的总缺陷面积为:{max_total_defect_area};') # f' 破损判别结果为:{ps_sum}; 预测的总缺陷面积为:{max_total_defect_area};')
response = pipe.send_data(cmd=cmd, brix=brix, diameter=diameter, green_percentage=gp, weight=weight, response = pipe.send_data(cmd=cmd, brix=brix, diameter=diameter, green_percentage=gp, weight=weight,
defect_num=ps_sum, total_defect_area=max_total_defect_area, rp=rp_result) defect_num=ps_sum, total_defect_area=max_total_defect_area, rp=rp_result)
return response return response
@ -853,14 +898,22 @@ class Data_processing:
diameter = 0 diameter = 0
gp = 0 gp = 0
weight = 0 weight = 0
zz_sum = 0 zz_sum = 1
max_total_defect_area = 0 max_total_defect_area = 0
rp_result = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), rp_result = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands),
dtype=np.uint8), cv2.COLOR_BGR2RGB) dtype=np.uint8), cv2.COLOR_BGR2RGB)
print(f'预测的brix值为{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{green_percentage};' # print(f'预测的brix值为{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{green_percentage};'
f' 褶皱判别结果为:{zz_sum}; 预测的总缺陷面积为:{max_total_defect_area};') # f' 褶皱判别结果为:{zz_sum}; 预测的总缺陷面积为:{max_total_defect_area};')
response = pipe.send_data(cmd=cmd, brix=brix, green_percentage=gp, diameter=diameter, weight=weight, response = pipe.send_data(cmd=cmd, brix=brix, green_percentage=gp, diameter=diameter, weight=weight,
defect_num=zz_sum, total_defect_area=max_total_defect_area, rp=rp_result) defect_num=zz_sum, total_defect_area=max_total_defect_area, rp=rp_result)
return response return response
# if __name__ == "__main__":
# img = cv2.imread(r'D:\project\20240714Actual_deployed\testimg\4-10-3.bmp')
# img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# data = Data_processing()
# diameter, green_percentage, total_pixels, rp, white_defect, new_bin_img, new_bin_and_white_defect_img, filled_img, safe_area, filled_defect = data.analyze_tomato(img)
# cv2.imshow("area", safe_area)
# cv2.waitKey(0)
# cv2.destroyAllWindows()

View File

@ -20,8 +20,24 @@ class Config:
imgclassifier_model_path = ROOT_DIR / 'models' / 'resnet18pf20240705.pth' imgclassifier_model_path = ROOT_DIR / 'models' / 'resnet18pf20240705.pth'
imgclassifier_class_indices_path = ROOT_DIR / 'models' / 'class_indices.json' imgclassifier_class_indices_path = ROOT_DIR / 'models' / 'class_indices.json'
#番茄破损模型 #番茄初版实例分割叶片模型,实例分割叶片
tomato_model_path = ROOT_DIR / 'weights' / 'best.pt' # toseg_weights = ROOT_DIR / 'weights' / 'raw_seg_best.pt'
#20240711番茄新版实例分割模型实例分割叶片、果蒂、果脐处
toseg_weights = ROOT_DIR / 'weights' / '20240711_seg_best.pt'
#番茄初版裂口目标检测模型,原始包含刀划伤的模型
# toobj_path = ROOT_DIR / 'weights' / 'raw_obj_best.pt'
#20240711番茄新版裂口目标检测模型去除刀划伤的模型
# toobj_path = ROOT_DIR / 'weights' / '20240711_obj_best.pt'
#20240712番茄新版裂口目标检测模型去除刀划伤的模型新增加坑状破损样本
toobj_path = ROOT_DIR / 'weights' / '20240712_obj_best.pt'
#classifer.py参数 #classifer.py参数
#tomato #tomato

View File

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# @Time : 2024/7/14 下午5:11
# @Author : TG
# @File : imgcopy.py
# @Software: PyCharm
import os
import shutil
def copy_images_recursively(source_folder, target_folder):
# 遍历源文件夹中的所有内容
for item in os.listdir(source_folder):
item_path = os.path.join(source_folder, item)
if os.path.isdir(item_path):
# 如果是文件夹,递归调用当前函数
copy_images_recursively(item_path, target_folder)
elif item.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
# 如果是图片文件,则复制到目标文件夹
shutil.copy(item_path, target_folder)
print(f"Copied {item_path} to {target_folder}")
# 源文件夹路径
source_folder = r'D:\project\20240714Actual_deployed\20240718test\T'
# 目标文件夹路径
target_folder = r'D:\project\20240714Actual_deployed\20240718test\01img'
# 调用函数
copy_images_recursively(source_folder, target_folder)

View File

@ -0,0 +1,34 @@
import os
import re
def natural_sort_key(s):
"""提取文本中的数字作为排序键"""
return [int(text) if text.isdigit() else text.lower() for text in re.split('(\d+)', s)]
def rename_bmp_images(folder_path, prefix, suffix):
# 获取文件夹中的所有文件
files = os.listdir(folder_path)
# 过滤出BMP图像文件并进行自然排序
bmp_files = sorted([f for f in files if f.lower().endswith('.bmp')], key=natural_sort_key)
# 对每个BMP图像文件进行重命名
for index, bmp_file in enumerate(bmp_files):
old_path = os.path.join(folder_path, bmp_file)
# 格式化新文件名例如1-1-1.bmp, 1-2-1.bmp, ...
new_name = f"{prefix}-{index + 1}-{suffix}.bmp"
new_path = os.path.join(folder_path, new_name)
# 重命名文件
os.rename(old_path, new_path)
print(f'Renamed {old_path} to {new_path}')
# 指定文件夹路径
folder_path = r'D:\project\20240714Actual_deployed\20240718test\T\bottom'
folder_path1 = r'D:\project\20240714Actual_deployed\20240718test\T\middle'
folder_path2 = r'D:\project\20240714Actual_deployed\20240718test\T\top'
num = '1'
# 调用函数进行重命名
rename_bmp_images(folder_path, prefix=num, suffix='1')
rename_bmp_images(folder_path1, prefix=num, suffix='2')
rename_bmp_images(folder_path2, prefix=num, suffix='3')

View File

@ -15,14 +15,14 @@ from utils.dataloaders import letterbox
from config import Config as setting from config import Config as setting
class Detector_to: class Detector_to:
def __init__(self, weights=Path(setting.tomato_model_path), def __init__(self, weights=Path(setting.toobj_path),
device="", half=False): device="", half=False):
self.device = select_device(device) self.device = select_device(device)
self.model = DetectMultiBackend(weights, device=self.device, fp16=half) self.model = DetectMultiBackend(weights, device=self.device, fp16=half)
self.stride = int(self.model.stride) # get stride from the model self.stride = int(self.model.stride) # get stride from the model
self.fp16 = half self.fp16 = half
def run(self, img, imgsz=(640, 640), conf_thres=0.25, iou_thres=0.45, max_det=1000): def run(self, img, imgsz=(640, 640), conf_thres=0.45, iou_thres=0.45, max_det=1000):
"""Runs YOLOv5 detection inference on a numpy array and returns the number of detections.""" """Runs YOLOv5 detection inference on a numpy array and returns the number of detections."""
imgsz = check_img_size(imgsz, s=self.stride) # check image size imgsz = check_img_size(imgsz, s=self.stride) # check image size

View File

@ -17,7 +17,8 @@ import numpy as np
from config import Config from config import Config
import time import time
from detector import Detector_to from detector import Detector_to
# from clspredict import runcls from to_seg import TOSEG
def main(is_debug=False): def main(is_debug=False):
setting = Config() setting = Config()
@ -33,24 +34,18 @@ def main(is_debug=False):
detector.load(path=setting.brix_model_path) detector.load(path=setting.brix_model_path)
dp = Data_processing() dp = Data_processing()
to = Detector_to() to = Detector_to()
tos = TOSEG()
#impf为百香果褶皱判别模型0为褶皱1为正常 #impf为百香果褶皱判别模型0为褶皱1为正常
impf = ImageClassifier(model_path=setting.imgclassifier_model_path, impf = ImageClassifier(model_path=setting.imgclassifier_model_path,
class_indices_path=setting.imgclassifier_class_indices_path) class_indices_path=setting.imgclassifier_class_indices_path)
print('系统初始化中...') print('系统初始化中...')
#模型预热 #模型预热
hh = time.time()
#与qt_test测试时需要注释掉预热模型接收尺寸为253013qt_test发送的数据为3030224需要对数据进行切片classifer.py第379行 #与qt_test测试时需要注释掉预热模型接收尺寸为253013qt_test发送的数据为3030224需要对数据进行切片classifer.py第379行
_ = 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))
hk = time.time()
print(f'brix模型预热时间{hk-hh}')
#run函数为番茄破损判别模型返回0表示无破损1、2、3即表示1、2、3处破损 #run函数为番茄破损判别模型返回0表示无破损1、2、3即表示1、2、3处破损
_ = to.run(np.ones((800, 613, 3), dtype=np.uint8)) _ = to.run(np.ones((800, 613, 3), dtype=np.uint8))
hi = time.time() _ = tos.toseg(np.ones((800, 613, 3), dtype=np.uint8))
print(f'run模型预热时间{hi-hk}')
_ = impf.predict(np.ones((800, 613, 3), dtype=np.uint8)) _ = impf.predict(np.ones((800, 613, 3), dtype=np.uint8))
gg = time.time()
print(f'impf模型预热时间{gg-hi}')
time.sleep(1) time.sleep(1)
print('系统初始化完成') print('系统初始化完成')
@ -70,23 +65,23 @@ def main(is_debug=False):
#主循环 #主循环
q = 1 q = 1
while True: while True:
st = time.time() # st = time.time()
#RGB图像部分 #RGB图像部分
images = [] images = []
cmd = None cmd = None
for i in range(3): for i in range(3):
start_time = time.time() # start_time = time.time()
data = pipe.receive_rgb_data(rgb_receive) data = pipe.receive_rgb_data(rgb_receive)
end_time = time.time() # end_time = time.time()
print(f'接收第{q}个果子第{i+1}张图数据时间:{end_time-start_time}') # print(f'接收第{q}个果子第{i+1}张图数据时间:{end_time-start_time}')
print(f'接收第{q}个果子第{i+1}张图数据长度:{len(data)}') # print(f'接收第{q}个果子第{i+1}张图数据长度:{len(data)}')
cmd, img = pipe.parse_img(data) cmd, img = pipe.parse_img(data)
end_time1 = time.time() # end_time1 = time.time()
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) # img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
print(f'解码第{q}个果子第{i + 1}张图数据时间:{end_time1 - end_time}') # print(f'解码第{q}个果子第{i + 1}张图数据时间:{end_time1 - end_time}')
print(f'接收第{q}个果子第{i+1}张图:{img.shape}') # print(f'接收第{q}个果子第{i+1}张图:{img.shape}')
# cv2.imwrite(f'./{q}_{i}.png', img) # cv2.imwrite(f'./{q}_{i}.png', img)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#默认全为有果 #默认全为有果
prediction = 1 prediction = 1
@ -105,21 +100,13 @@ def main(is_debug=False):
#Spec数据部分 #Spec数据部分
spec = None spec = None
if cmd == 'PF': if cmd == 'PF':
sp = time.time()
spec_data = pipe.receive_spec_data(spec_receive) spec_data = pipe.receive_spec_data(spec_receive)
ep = time.time() # print(f'接收到第{q}个果子的光谱数据长度:{len(spec_data)}')
print(f'接收到第{q}个果子的光谱数据时间:{ep-sp}')
print(f'接收到第{q}个果子的光谱数据长度:{len(spec_data)}')
_, spec = pipe.parse_spec(spec_data) _, spec = pipe.parse_spec(spec_data)
ep1 = time.time() # print(f'接收到第{q}个果子的光谱数据尺寸:{spec.shape}')
print(f'解码第{q}个果子的光谱数据时间:{ep1-ep}')
print(f'接收到第{q}个果子的光谱数据尺寸:{spec.shape}')
#数据处理部分 #数据处理部分
if images: # 确保images不为空 if images: # 确保images不为空
sg = time.time() response = dp.process_data(cmd, images, spec, pipe, detector, to, impf, q)
response = dp.process_data(cmd, images, spec, pipe, detector, to, impf)
eg = time.time()
print(f'{q}个果子数据处理时间:{eg-sg}')
if response: if response:
logging.info(f'处理成功,响应为: {response}') logging.info(f'处理成功,响应为: {response}')
else: else:
@ -127,9 +114,10 @@ def main(is_debug=False):
else: else:
logging.error("没有有效的图像进行处理") logging.error("没有有效的图像进行处理")
print(f'{q}个果子处理完成') print(f'{q}个果子处理完成')
# end_time2 = time.time()
# print(f'第{q}个果子全流程时间:{(end_time2-st) * 1000}毫秒')
q += 1 q += 1
end_time2 = time.time()
print(f'{q}个果子全流程时间:{end_time2-st}')
if __name__ == '__main__': if __name__ == '__main__':

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -1047,9 +1047,9 @@ class Detections:
class Proto(nn.Module): class Proto(nn.Module):
# YOLOv5 mask Proto module for segmentation models # YOLOv5 leaf Proto module for segmentation models
def __init__(self, c1, c_=256, c2=32): def __init__(self, c1, c_=256, c2=32):
"""Initializes YOLOv5 Proto module for segmentation with input, proto, and mask channels configuration.""" """Initializes YOLOv5 Proto module for segmentation with input, proto, and leaf channels configuration."""
super().__init__() super().__init__()
self.cv1 = Conv(c1, c_, k=3) self.cv1 = Conv(c1, c_, k=3)
self.upsample = nn.Upsample(scale_factor=2, mode="nearest") self.upsample = nn.Upsample(scale_factor=2, mode="nearest")

Binary file not shown.

View File

@ -129,7 +129,7 @@ class Detect(nn.Module):
class Segment(Detect): class Segment(Detect):
# YOLOv5 Segment head for segmentation models # YOLOv5 Segment head for segmentation models
def __init__(self, nc=80, anchors=(), nm=32, npr=256, ch=(), inplace=True): def __init__(self, nc=80, anchors=(), nm=32, npr=256, ch=(), inplace=True):
"""Initializes YOLOv5 Segment head with options for mask count, protos, and channel adjustments.""" """Initializes YOLOv5 Segment head with options for leaf count, protos, and channel adjustments."""
super().__init__(nc, anchors, ch, inplace) super().__init__(nc, anchors, ch, inplace)
self.nm = nm # number of masks self.nm = nm # number of masks
self.npr = npr # number of protos self.npr = npr # number of protos

View File

@ -0,0 +1,88 @@
# -*- coding: utf-8 -*-
# @Time : 2024/7/16 下午8:58
# @Author : GG
# @File : pf_zz_test.py
# @Software: PyCharm
# -*- coding: utf-8 -*-
# @Time : 2024/7/7 下午4:33
# @Author : TG
# @File : totest.py
# @Software: PyCharm
import time
import cv2
import numpy as np
import os
import pandas as pd
from PIL import Image
import re
from classifer import ImageClassifier
from config import Config as setting
def tryint(s):
try:
return int(s)
except ValueError:
return s
def natural_sort_key(s):
return [tryint(c) for c in re.split('([0-9]+)', s)]
# "0": "De" 褶皱
# "1": "N" 正常
def main():
image_dir = r'D:\project\20240714Actual_deployed\zz_test\TEST'
pf_zz = ImageClassifier(model_path=setting.imgclassifier_model_path,
class_indices_path=setting.imgclassifier_class_indices_path) # 假设 TOSEG 是已定义好的类,可以处理图片分割
# 获取所有.bmp文件并进行自然排序
rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith('.bmp')]
rgb_files.sort(key=natural_sort_key)
# 准备保存到 Excel 的数据
records = []
for idx, image_path in enumerate(rgb_files):
img = cv2.imread(image_path, cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
t = time.time()
result = pf_zz.predict(img)
e = time.time()
process_time = (e - t) * 1000
print(f'{idx + 1}张图时间:{process_time}')
print(f'结果:{result}')
## 控制台显示识别结果
# records.append(result)
# print(f'识别为正常未褶皱的数量:{sum(records)}')
## 将结果及原始文件信息写入excel
# 获取原始文件名
original_filename = os.path.splitext(os.path.basename(image_path))[0]
# 添加记录到列表
records.append({
"图片序号": idx + 1,
"图片名": original_filename,
"识别结果(0为褶皱1为正常": result,
"处理时间(ms)": process_time
})
# 创建 DataFrame 并写入 Excel 文件
df = pd.DataFrame(records)
df.to_excel(r'./zz_result.xlsx', index=False)
if __name__ == '__main__':
main()

View File

@ -46,9 +46,9 @@ class Pipe:
) )
print("pipe管道创建成功等待连接...") print("pipe管道创建成功等待连接...")
time.sleep(0.5) time.sleep(0.5)
print('Fruit1程序启动成功Fruit2程序正在启动中预计需要30秒') print('Fruit正在启动中预计需要30秒')
time.sleep(0.5) time.sleep(0.5)
print('请勿关闭Fruit1程序,否则Fruit2程序将无法正常运行!') print('请勿关闭Fruit程序,否则程序将无法正常运行!')
time.sleep(0.5) time.sleep(0.5)
print('等待中..........') print('等待中..........')
# 等待发送端连接 # 等待发送端连接
@ -59,7 +59,7 @@ class Pipe:
print("rgb_send connected.") print("rgb_send connected.")
win32pipe.ConnectNamedPipe(self.spec_receive, None) win32pipe.ConnectNamedPipe(self.spec_receive, None)
print("spec_receive connected.") print("spec_receive connected.")
print('Fruit2程序启动成功!') print('Fruit程序启动成功!')
return self.rgb_receive, self.rgb_send, self.spec_receive return self.rgb_receive, self.rgb_send, self.spec_receive
except Exception as e: except Exception as e:
@ -89,9 +89,9 @@ class Pipe:
try: try:
# 读取光谱数据长度 # 读取光谱数据长度
len_spec = win32file.ReadFile(spec_receive, 4, None) len_spec = win32file.ReadFile(spec_receive, 4, None)
print(f'len_data:{len_spec}') # print(f'len_data:{len_spec}')
data_size = int.from_bytes(len_spec[1], byteorder='big') data_size = int.from_bytes(len_spec[1], byteorder='big')
print(f'所需读取数据长度:{data_size}') # print(f'所需读取数据长度:{data_size}')
# 读取光谱数据 # 读取光谱数据
result, spec_data = win32file.ReadFile(spec_receive, data_size, None) result, spec_data = win32file.ReadFile(spec_receive, data_size, None)
# 检查读取操作是否成功 # 检查读取操作是否成功
@ -152,7 +152,7 @@ class Pipe:
n_rows, n_cols, n_bands, spec = data[:2], data[2:4], data[4:6], data[6:] n_rows, n_cols, n_bands, spec = data[:2], data[2:4], data[4:6], data[6:]
try: try:
n_rows, n_cols, n_bands = [int.from_bytes(x, byteorder='big') for x in [n_rows, n_cols, n_bands]] n_rows, n_cols, n_bands = [int.from_bytes(x, byteorder='big') for x in [n_rows, n_cols, n_bands]]
print(f'高度:{n_rows}, 宽度:{n_cols}, 谱段数:{n_bands}') # print(f'高度:{n_rows}, 宽度:{n_cols}, 谱段数:{n_bands}')
except Exception as e: except Exception as e:
logging.error(f'长宽转换失败, 错误代码{e}, 报文大小: n_rows:{n_rows}, n_cols:{n_cols}, n_bands:{n_bands}') logging.error(f'长宽转换失败, 错误代码{e}, 报文大小: n_rows:{n_rows}, n_cols:{n_cols}, n_bands:{n_bands}')
return '', None return '', None

View File

@ -12,6 +12,9 @@ import win32file
from PIL import Image from PIL import Image
import numpy as np import numpy as np
import cv2 import cv2
import pandas as pd
import re
class MainWindow(QMainWindow): class MainWindow(QMainWindow):
def __init__(self): def __init__(self):
@ -63,32 +66,63 @@ class MainWindow(QMainWindow):
None None
) )
def save_results_to_excel(self, results, file_path='./testimg_result/results.xlsx'):
# 创建一个 DataFrame
df = pd.DataFrame([results]) # results 是一个字典
# 检查文件是否存在,如果存在就加载旧的 DataFrame然后追加新数据
try:
with pd.ExcelWriter(file_path, mode='a', engine='openpyxl', if_sheet_exists='overlay') as writer:
old_df = pd.read_excel(file_path)
new_df = pd.concat([old_df, df], ignore_index=True)
new_df.to_excel(writer, index=False, sheet_name='Results')
print("结果保存到 Excel 成功")
except FileNotFoundError:
# 如果文件不存在,直接写入新的 DataFrame
df.to_excel(file_path, index=False, sheet_name='Results')
print("结果保存到 Excel 成功")
except Exception as e:
print(f"保存到 Excel 失败,错误原因: {e}")
def tryint(self, s):
try:
return int(s)
except:
return s
def natural_sort_key(self, s):
return [self.tryint(c) for c in re.split('([0-9]+)', s)]
def send_image_group(self, image_dir): def send_image_group(self, image_dir):
''' '''
发送图像数据 发送图像数据
:param image_dir: bmp和raw文件所在文件夹 :param image_dir: bmp文件所在文件夹
:return: :return:
''' '''
rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith(('.bmp'))][:3] # 获取所有.bmp文件并进行自然排序
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')]
rgb_files.sort(key=self.natural_sort_key)
self.send_YR() self.send_YR() # 发送预热指令
for _ in range(100):
for image_path in rgb_files: total_files = len(rgb_files)
for i in range(0, total_files, 3):
current_batch = rgb_files[i:i + 3] # 每次处理3张图片
for image_path in current_batch:
img = cv2.imread(image_path, cv2.IMREAD_COLOR) img = cv2.imread(image_path, cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = np.asarray(img, dtype=np.uint8) img = np.asarray(img, dtype=np.uint8)
try: try:
# win32file.WriteFile(self.rgb_send, len(img_data).to_bytes(4, byteorder='big'))
height = img.shape[0] height = img.shape[0]
width = img.shape[1] width = img.shape[1]
height = height.to_bytes(2, byteorder='big') height = height.to_bytes(2, byteorder='big')
width = width.to_bytes(2, byteorder='big') width = width.to_bytes(2, byteorder='big')
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 = 'TO'
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)
@ -96,29 +130,33 @@ class MainWindow(QMainWindow):
except Exception as e: except Exception as e:
print(f"数据发送失败. 错误原因: {e}") print(f"数据发送失败. 错误原因: {e}")
if spec_files: print(f"当前处理的图片: {os.path.basename(image_path)}") # 打印当前正在处理的图片名称
spec_file = spec_files[0]
with open(spec_file, 'rb') as f:
spec_data = f.read()
try:
# win32file.WriteFile(self.spec_send, len(spec_data).to_bytes(4, byteorder='big'))
# print(f"发送的光谱数据长度: {len(spec_data)}") # if spec_files:
heigth = 30 # spec_file = spec_files[0]
weight = 30 # with open(spec_file, 'rb') as f:
bands = 224 # spec_data = f.read()
heigth = heigth.to_bytes(2, byteorder='big') #
weight = weight.to_bytes(2, byteorder='big') # try:
bands = bands.to_bytes(2, byteorder='big') # # win32file.WriteFile(self.spec_send, len(spec_data).to_bytes(4, byteorder='big'))
length = (len(spec_data)+8).to_bytes(4, byteorder='big') # # print(f"发送的光谱数据长度: {len(spec_data)}")
# cmd = 'TO'测试番茄数据cmd = 'PF':测试百香果数据 # heigth = 30
cmd = 'TO' # weight = 30
data_send = length + cmd.upper().encode('ascii') + heigth + weight + bands + spec_data # bands = 224
win32file.WriteFile(self.spec_send, data_send) # heigth = heigth.to_bytes(2, byteorder='big')
print(f'发送的光谱数据长度: {len(data_send)}') # weight = weight.to_bytes(2, byteorder='big')
print(f'spec长度: {len(spec_data)}') # bands = bands.to_bytes(2, byteorder='big')
except Exception as e: # length = (len(spec_data)+8).to_bytes(4, byteorder='big')
print(f"数据发送失败. 错误原因: {e}") # # cmd = 'TO'测试番茄数据cmd = 'PF':测试百香果数据
# cmd = 'TO'
# data_send = length + cmd.upper().encode('ascii') + heigth + weight + bands + spec_data
# win32file.WriteFile(self.spec_send, data_send)
# print(f'发送的光谱数据长度: {len(data_send)}')
# print(f'spec长度: {len(spec_data)}')
# except Exception as e:
# print(f"数据发送失败. 错误原因: {e}")
self.receive_result() self.receive_result()
@ -158,6 +196,20 @@ class MainWindow(QMainWindow):
width = int.from_bytes(data[16:18], byteorder='big') width = int.from_bytes(data[16:18], byteorder='big')
rp = data[18:] rp = data[18:]
img = np.frombuffer(rp, dtype=np.uint8).reshape(heigth, width, -1) img = np.frombuffer(rp, dtype=np.uint8).reshape(heigth, width, -1)
results = {
'Cmd': data[:2].decode('ascii').strip().upper(),
'Brix': (int.from_bytes(data[2:4], byteorder='big')) / 1000,
'Green Percentage': (int.from_bytes(data[4:5], byteorder='big')) / 100,
'Diameter': (int.from_bytes(data[5:7], byteorder='big')) / 100,
'Weight': int.from_bytes(data[7:8], byteorder='big'),
'Defect Number': int.from_bytes(data[8:10], byteorder='big'),
'Total Defect Area': (int.from_bytes(data[10:14], byteorder='big')) / 1000
}
# 调用保存到 Excel 的函数
self.save_results_to_excel(results)
print(f"指令:{cmd_result}, 糖度值:{brix}, 绿色占比:{green_percentage}, 直径:{diameter}cm, " print(f"指令:{cmd_result}, 糖度值:{brix}, 绿色占比:{green_percentage}, 直径:{diameter}cm, "
f"预估重量:{weight}g, 缺陷个数:{defect_num}, 缺陷面积:{total_defect_area}cm^2, 结果图的尺寸:{img.shape}") f"预估重量:{weight}g, 缺陷个数:{defect_num}, 缺陷面积:{total_defect_area}cm^2, 结果图的尺寸:{img.shape}")

View File

@ -0,0 +1,44 @@
albumentations==1.4.11
comet_ml==3.44.1
coremltools==7.2
Flask==3.0.3
GitPython==3.1.43
ipython==8.12.3
joblib==1.2.0
matplotlib==3.7.1
mss==9.0.1
nncf==2.11.0
numpy==1.25.0
onnx==1.16.1
onnxruntime==1.18.1
onnxsim==0.4.36
opencv_contrib_python==4.10.0.84
opencv_python==4.10.0.84
opencv_python_headless==4.10.0.84
openvino==2024.2.0
pafy==0.5.5
pandas==1.5.3
Pillow==9.4.0
psutil==5.9.0
PyQt5==5.15.10
PyQt5_sip==12.11.0
pywin32==305
PyYAML==6.0
Requests==2.32.3
scikit_learn==1.2.2
scipy==1.10.1
seaborn==0.13.2
setuptools==60.2.0
tensorflow==2.17.0
tensorflowjs==4.20.0
tensorrt==10.2.0.post1
tflite_runtime==2.14.0
tflite_support==0.4.4
torch==2.0.1
torchvision==0.15.2
tqdm==4.65.2
train==0.0.5
tritonclient==2.47.0
ultralytics==8.2.48
ultralytics_thop==2.0.0
x2paddle==1.4.1

View File

@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
# @Time : 2024/7/7 下午4:33
# @Author : TG
# @File : totest.py
# @Software: PyCharm
import time
import cv2
import numpy as np
import os
import pandas as pd
from PIL import Image
import re
from to_seg import TOSEG
def tryint(s):
try:
return int(s)
except ValueError:
return s
def natural_sort_key(s):
return [tryint(c) for c in re.split('([0-9]+)', s)]
def main():
image_dir = r'D:\project\20240714Actual_deployed\testimg'
to = TOSEG() # 假设 TOSEG 是已定义好的类,可以处理图片分割
# 获取所有.bmp文件并进行自然排序
rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith('.bmp')]
rgb_files.sort(key=natural_sort_key)
# 准备保存到 Excel 的数据
records = []
for idx, image_path in enumerate(rgb_files):
img = cv2.imread(image_path, cv2.IMREAD_COLOR)
# img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
t = time.time()
result = to.toseg(img) # 假设 toseg 方法接受一个图片数组,并返回处理后的图片
e = time.time()
result = cv2.cvtColor(result, cv2.COLOR_GRAY2BGR)
process_time = e - t
print(f'{idx + 1}张图时间:{process_time}')
# 获取原始文件名并添加“mask”后缀
original_filename = os.path.splitext(os.path.basename(image_path))[0]
output_filename = f'{original_filename}_leaf.png'
cv2.imwrite(os.path.join(r'D:\project\20240714Actual_deployed\leaf',
output_filename), result)
# 添加记录到列表
records.append({
"Image Index": idx + 1,
"File Name": original_filename,
"Processing Time (s)": process_time
})
# cv2.imshow('result', result)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# 创建 DataFrame 并写入 Excel 文件
df = pd.DataFrame(records)
df.to_excel(r'D:\project\20240714Actual_deployed\leaf\leaf_processing_times.xlsx', index=False)
if __name__ == '__main__':
main()

186
20240627test4/to_seg.py Normal file
View File

@ -0,0 +1,186 @@
import os
import sys
from pathlib import Path
import torch
FILE = Path(__file__).resolve()
ROOT = FILE.parents[1] # YOLOv5 root directory
if str(ROOT) not in sys.path:
sys.path.append(str(ROOT)) # add ROOT to PATH
ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative
from models.common import DetectMultiBackend
from utils.general import check_img_size, non_max_suppression, scale_boxes
from utils.segment.general import process_mask, process_mask_native
from utils.torch_utils import select_device, smart_inference_mode
import cv2
import numpy as np
from config import Config as setting
def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32):
# This function remains the same as defined previously
shape = img.shape[:2] # current shape [height, width]
if isinstance(new_shape, int):
new_shape = (new_shape, new_shape)
r = min(new_shape[0] / shape[0], new_shape[1] / shape[1])
if not scaleup:
r = min(r, 1.0)
ratio = r, r
new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r))
dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1]
if auto:
dw, dh = np.mod(dw, stride), np.mod(dh, stride)
elif scaleFill:
dw, dh = 0.0, 0.0
new_unpad = new_shape
ratio = new_shape[0] / shape[1], new_shape[1] / shape[0]
dw /= 2
dh /= 2
if shape[::-1] != new_unpad:
img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR)
top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1))
left, right = int(round(dw - 0.1)), int(round(dw + 0.1))
img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)
return img, ratio, (dw, dh)
def process_image(img0, img_size=640, stride=32, auto=True):
"""
Processes an image by resizing and padding it to the required size.
Args:
- img0 (np.array): Original image as a numpy array.
- img_size (int, optional): Desired size of the image. Defaults to 640.
- stride (int, optional): Stride size for padding. Defaults to 32.
- auto (bool, optional): If True, automatically adjusts padding to meet stride requirements. Defaults to True.
Returns:
- np.array: The processed image ready for model input.
"""
# Resize and pad the image
im, _, _ = letterbox(img0, new_shape=img_size, stride=stride, auto=auto)
# Convert image from HWC to CHW format and from BGR to RGB
im = im.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB
im = np.ascontiguousarray(im)
return im
class TOSEG:
def __init__(self, weights=Path(setting.toseg_weights), device='', dnn=False, data=None, half=False, imgsz=(640, 640)):
self.device = select_device(device)
self.model = DetectMultiBackend(weights, device=self.device, dnn=dnn, data=data, fp16=half)
self.stride, self.names, self.pt = self.model.stride, self.model.names, self.model.pt
self.imgsz = check_img_size(imgsz, s=self.stride)
self.model.warmup(imgsz=(1 if self.pt else 1, 3, *self.imgsz))
@smart_inference_mode()
#返回结果图像
# def visualize(self, image, results, line_thickness=3, hide_labels=False, hide_conf=False):
# annotator = Annotator(image, line_width=line_thickness)
#
# # 获取原始图像尺寸
# h, w = image.shape[:2]
#
# # 准备 im_gpu 参数
# im_gpu = torch.as_tensor(image, dtype=torch.float16, device=self.device).permute(2, 0, 1).flip(
# 0).contiguous() / 255
#
# for r in results:
# box = r['xyxy']
# leaf = r['leaf']
# label = None if hide_labels else (r['label'] if hide_conf else f"{r['label']} {r['conf']:.2f}")
# annotator.box_label(box, label, color=colors(r['cls'], True))
#
# # 确保 leaf 是正确的格式并调整大小
# if isinstance(leaf, np.ndarray):
# leaf = torch.from_numpy(leaf).to(self.device)
# elif isinstance(leaf, list):
# leaf = torch.tensor(leaf, device=self.device)
#
# # 如果 leaf 是 2D添加批次维度
# if leaf.ndim == 2:
# leaf = leaf.unsqueeze(0)
#
# # 调整掩码大小以匹配原始图像
# leaf = torch.nn.functional.interpolate(leaf.unsqueeze(1).float(), size=(h, w), mode='bilinear',
# align_corners=False).squeeze(1)
#
# annotator.masks(leaf, colors=[colors(r['cls'], True)], im_gpu=im_gpu)
#
# return annotator.result()
#返回掩码图像
def visualize(self, image, results, line_thickness=3, hide_labels=False, hide_conf=False):
# 创建一个全白的背景图像
background = np.zeros_like(image) * 255 # 将背景设置为白色
h, w = image.shape[:2] # 获取图像尺寸
for r in results:
mask = r['leaf']
if isinstance(mask, np.ndarray):
mask = torch.from_numpy(mask).to(self.device)
elif isinstance(mask, list):
mask = torch.tensor(mask, device=self.device)
if mask.ndim == 2:
mask = mask.unsqueeze(0)
# 调整掩码大小以匹配原始图像
mask = torch.nn.functional.interpolate(mask.unsqueeze(1).float(), size=(h, w), mode='bilinear',
align_corners=False).squeeze(1)
# 将遮罩应用于背景
black_mask = (mask.cpu().numpy() > 0.5) # 创建一个黑色遮罩
for i in range(3): # 对每个颜色通道进行操作
background[:, :, i] = np.where(black_mask, 255, background[:, :, i]) # 在遮罩区域应用黑色
return background
def predict(self, source, conf_thres=0.25, iou_thres=0.45, max_det=1000, classes=None,
agnostic_nms=False, augment=False, retina_masks=False):
# dataset = LoadImages(source, img_size=self.imgsz, stride=self.stride, auto=self.pt)
# for path, im, im0s, vid_cap, s in dataset:
im0s = source
im = process_image(im0s, img_size=self.imgsz, stride=self.stride, auto=self.pt)
im = torch.from_numpy(im).to(self.model.device)
im = im.half() if self.model.fp16 else im.float() # uint8 to fp16/32
im /= 255 # 0 - 255 to 0.0 - 1.0
if len(im.shape) == 3:
im = im[None] # expand for batch dim
pred, proto = self.model(im, augment=augment)[:2]
pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det, nm=32)
results = []
for i, det in enumerate(pred): # per image
if len(det):
if retina_masks:
det[:, :4] = scale_boxes(im.shape[2:], det[:, :4], im0s.shape).round()
masks = process_mask_native(proto[i], det[:, 6:], det[:, :4], im0s.shape[:2])
else:
masks = process_mask(proto[i], det[:, 6:], det[:, :4], im.shape[2:], upsample=True)
det[:, :4] = scale_boxes(im.shape[2:], det[:, :4], im0s.shape).round()
for j, (*xyxy, conf, cls) in enumerate(reversed(det[:, :6])):
c = int(cls)
label = f'{self.names[c]} {conf:.2f}'
mask = masks[j]
results.append({
'xyxy': xyxy,
'conf': conf,
'cls': c,
'label': label,
'leaf': mask
})
return results, im0s
def toseg(self, img):
results, image = self.predict(img)
vaa = self.visualize(image, results)
mask = cv2.cvtColor(vaa, cv2.COLOR_RGB2GRAY)
return mask

View File

@ -0,0 +1,457 @@
2024-06-28 11:30:05,483 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:35:36,240 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:36:24,181 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:51:27,970 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-28 11:51:27,971 main.py[line:82] - ERROR - 处理失败
2024-06-28 11:51:27,977 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:55:18,328 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 11:59:41,747 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:03:47,921 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-28 12:03:47,922 main.py[line:82] - ERROR - 处理失败
2024-06-28 12:03:47,922 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:06:28,421 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:12:04,287 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:14:07,667 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:15:23,671 utils.py[line:101] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:17:16,305 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:18:43,577 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:20:46,118 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:22:39,747 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 12:26:07,385 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 14:52:26,065 utils.py[line:101] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 14:55:54,058 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 14:56:51,979 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:18:10,133 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:20:59,777 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:23:38,138 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:31:44,479 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 15:48:30,938 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:03:04,564 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:07:31,464 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:25:01,278 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:29:57,905 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:49:10,627 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:50:30,739 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 16:52:40,850 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:01:43,963 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:05:56,524 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:09:33,282 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:12:01,788 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:13:27,639 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-28 17:20:43,034 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 15:43:42,727 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 15:52:02,852 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:08:30,885 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:21:17,909 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:31:42,830 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-29 16:31:42,831 main.py[line:92] - ERROR - 处理失败
2024-06-29 16:31:42,831 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:35:42,748 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:44:57,631 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:49:04,069 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 16:53:18,366 utils.py[line:158] - ERROR - 图像指令转换失败,数据长度错误
2024-06-29 17:17:24,471 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 17:44:57,312 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 17:48:31,343 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-29 17:48:31,344 main.py[line:95] - ERROR - 处理失败
2024-06-29 17:48:31,344 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 17:52:27,224 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-29 18:40:34,394 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-06-29 18:40:34,395 main.py[line:95] - ERROR - 处理失败
2024-06-29 18:40:34,395 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 12:45:15,007 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 12:57:37,170 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 13:01:35,413 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 14:14:42,010 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 14:24:06,845 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-06-30 14:35:07,953 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 15:27:37,749 utils.py[line:161] - ERROR - 图像指令转换失败,数据长度错误
2024-07-01 16:23:59,608 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 16:27:39,666 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 16:45:20,986 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 16:49:36,061 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 16:57:25,351 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:01:32,692 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:22:45,049 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:25:23,065 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-01 17:25:23,065 main.py[line:101] - ERROR - 处理失败
2024-07-01 17:25:23,065 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:27:39,278 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:29:37,321 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:31:32,282 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:33:22,204 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:35:32,399 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:46:20,681 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:47:51,507 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-01 17:51:45,559 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-01 17:51:45,559 main.py[line:101] - ERROR - 处理失败
2024-07-01 17:51:45,560 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 14:08:48,265 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 14:08:48,265 main.py[line:108] - ERROR - 处理失败
2024-07-04 14:08:49,453 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 14:08:49,453 main.py[line:108] - ERROR - 处理失败
2024-07-04 14:08:50,744 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 14:08:50,744 main.py[line:108] - ERROR - 处理失败
2024-07-04 14:08:50,744 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 14:27:19,068 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:41:47,465 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:45:24,931 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:49:02,620 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:51:48,679 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 16:53:58,252 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 17:00:49,493 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 17:08:10,792 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:10,793 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:12,041 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:12,042 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:13,179 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:13,179 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:14,424 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:14,425 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:15,606 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:15,606 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:16,934 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:16,934 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:18,134 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:18,134 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:19,383 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:19,383 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:20,639 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:20,639 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:21,809 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:08:21,809 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:08:21,810 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 17:18:14,994 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-04 17:20:39,388 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:39,388 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:40,562 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:40,563 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:41,738 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:41,738 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:43,017 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:43,017 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:44,275 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:44,275 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:45,548 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:45,548 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:46,743 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:46,743 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:47,987 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:47,987 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:49,183 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:49,183 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:50,393 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:50,394 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:51,724 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:51,724 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:52,901 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:52,901 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:54,161 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:54,161 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:55,332 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:55,333 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:56,561 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-04 17:20:56,561 main.py[line:110] - ERROR - 处理失败
2024-07-04 17:20:56,561 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-05 14:23:17,274 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-05 14:52:48,462 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-05 14:59:25,432 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-05 14:59:25,433 main.py[line:110] - ERROR - 处理失败
2024-07-05 14:59:25,433 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-05 15:21:42,677 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 15:39:01,858 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 15:46:25,324 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 16:31:01,725 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 16:32:57,727 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 16:35:39,825 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 16:57:43,916 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 17:28:44,904 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 17:42:03,094 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-06 17:42:03,094 main.py[line:110] - ERROR - 处理失败
2024-07-06 17:42:04,263 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-06 17:42:04,263 main.py[line:110] - ERROR - 处理失败
2024-07-06 17:42:05,507 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-06 17:42:05,507 main.py[line:110] - ERROR - 处理失败
2024-07-06 19:07:46,189 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 20:33:21,028 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 20:43:24,359 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-06 20:45:53,598 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-06 20:45:53,599 main.py[line:110] - ERROR - 处理失败
2024-07-06 20:45:54,751 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-06 20:45:54,751 main.py[line:110] - ERROR - 处理失败
2024-07-06 20:45:56,017 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-06 20:45:56,017 main.py[line:110] - ERROR - 处理失败
2024-07-06 20:45:56,017 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 09:05:50,186 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:50,186 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:05:51,382 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:51,382 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:05:52,583 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:52,584 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:05:53,909 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:53,909 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:05:55,070 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:55,070 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:05:56,335 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:56,335 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:05:57,471 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:57,471 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:05:58,682 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:58,682 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:05:59,811 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:05:59,812 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:00,961 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:06:00,961 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:02,190 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:06:02,190 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:03,350 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:06:03,350 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:04,553 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:06:04,553 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:05,659 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:06:05,660 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:06,869 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:06:06,870 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:07,986 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:06:07,986 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:09,130 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 09:06:09,130 main.py[line:110] - ERROR - 处理失败
2024-07-07 09:06:09,132 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 09:12:39,560 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 09:16:16,776 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 11:33:16,851 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 11:40:33,833 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 11:42:59,905 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 11:48:01,402 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 11:50:49,976 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 11:55:37,758 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 12:03:52,555 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 12:48:51,656 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误
2024-07-07 12:57:58,164 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 14:31:13,151 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 15:14:10,012 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:10,012 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:11,366 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:11,367 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:12,667 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:12,667 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:13,975 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:13,975 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:15,163 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:15,163 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:16,442 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:16,443 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:17,700 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:17,700 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:18,901 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:18,901 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:20,195 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:20,195 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:21,538 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:21,538 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:22,842 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:22,842 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:24,019 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:24,020 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:25,346 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:25,346 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:26,540 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:26,541 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:27,750 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:27,750 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:29,060 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:29,060 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:30,259 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:14:30,259 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:14:30,280 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 15:29:47,675 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:47,676 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:48,883 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:48,883 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:50,076 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:50,077 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:51,389 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:51,389 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:52,601 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:52,601 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:53,893 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:53,893 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:55,103 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:55,104 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:56,406 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:56,406 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:57,596 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:57,596 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:29:58,841 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:29:58,841 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:30:00,179 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:30:00,179 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:30:01,409 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:30:01,410 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:30:02,697 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:30:02,698 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:30:03,898 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:30:03,899 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:30:05,199 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:30:05,199 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:30:06,427 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:30:06,427 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:30:07,616 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 15:30:07,616 main.py[line:110] - ERROR - 处理失败
2024-07-07 15:30:07,637 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 16:18:38,077 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 16:18:38,078 main.py[line:110] - ERROR - 处理失败
2024-07-07 16:18:39,022 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 16:18:39,023 main.py[line:110] - ERROR - 处理失败
2024-07-07 16:18:40,052 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 16:18:40,053 main.py[line:110] - ERROR - 处理失败
2024-07-07 16:18:41,201 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 16:18:41,201 main.py[line:110] - ERROR - 处理失败
2024-07-07 16:18:42,336 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 16:18:42,336 main.py[line:110] - ERROR - 处理失败
2024-07-07 16:18:43,586 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 16:18:43,587 main.py[line:110] - ERROR - 处理失败
2024-07-07 16:18:44,791 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-07 16:18:44,791 main.py[line:110] - ERROR - 处理失败
2024-07-07 16:28:01,454 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 16:50:24,922 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 17:37:51,829 pipe_utils.py[line:104] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 17:55:04,504 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 17:59:48,356 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 18:25:13,744 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 18:55:15,790 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-07 19:10:32,354 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 09:24:38,903 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 09:39:36,127 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 09:45:37,431 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 11:09:16,559 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 11:13:06,783 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 11:27:00,565 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 11:40:36,810 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 12:02:35,135 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 12:42:16,270 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 12:44:05,091 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 13:00:54,572 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 13:04:07,171 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 13:08:00,371 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 13:12:10,509 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 14:40:30,277 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 14:43:28,816 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 15:17:54,843 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 15:55:38,941 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 15:59:18,181 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 16:01:33,259 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 16:08:34,599 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 16:11:00,155 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 16:43:42,636 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 16:50:43,173 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 17:08:09,783 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 17:16:04,619 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 17:40:47,970 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 17:48:37,988 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 17:57:01,928 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 18:34:11,766 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-08 18:35:40,659 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 08:55:35,459 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 09:02:26,287 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误
2024-07-09 09:10:57,173 pipe_utils.py[line:104] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 09:15:43,719 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误
2024-07-09 09:23:08,794 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 10:18:50,702 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误
2024-07-09 10:38:34,151 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误
2024-07-09 10:45:15,487 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 11:03:10,520 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 11:09:11,430 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 11:16:00,876 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 15:22:28,025 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 15:27:28,876 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 15:49:20,318 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 16:14:06,963 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 17:12:28,074 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 17:21:46,134 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 18:42:35,725 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 18:48:46,486 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 18:49:59,862 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 18:53:36,014 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 18:55:27,600 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 19:04:17,082 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-09 19:08:17,174 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 06:26:42,776 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 07:01:40,315 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 08:26:27,343 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。')
2024-07-10 08:26:27,343 main.py[line:113] - ERROR - 处理失败
2024-07-10 08:26:27,345 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 09:09:42,450 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 10:06:33,515 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 11:43:46,982 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 12:09:14,853 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 12:12:40,941 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 12:18:01,000 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 12:25:47,254 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 14:14:58,422 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 14:18:28,047 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 14:21:52,725 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 14:24:46,863 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 14:35:13,271 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 14:38:22,932 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-10 17:21:05,363 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 11:41:03,215 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 11:43:19,922 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 11:48:49,239 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 11:51:05,972 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 11:53:49,877 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 12:06:22,516 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:18:06,630 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:24:32,560 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:27:28,554 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:31:09,505 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:35:34,850 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:39:31,434 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:46:11,927 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:49:21,103 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:52:53,712 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 13:57:44,190 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 15:43:52,570 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 16:09:54,143 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 17:43:57,577 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 18:15:56,608 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 18:19:34,912 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 18:24:31,666 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 18:28:53,782 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 18:32:02,373 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 18:36:43,949 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 18:42:14,595 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-12 18:46:56,102 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 18:55:44,441 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 19:10:42,177 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 19:39:08,500 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 20:13:21,091 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 20:15:58,584 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 20:21:29,532 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 20:26:05,871 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 20:31:43,184 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 21:55:12,612 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 21:57:48,492 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 22:03:20,562 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-14 22:05:51,415 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-15 23:29:16,269 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-15 23:34:33,796 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-15 23:49:43,143 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-16 00:44:00,856 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-16 17:41:22,234 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-16 19:23:17,696 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 12:18:32,533 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 12:20:15,008 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 12:24:47,331 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 13:05:01,439 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 13:05:42,329 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 13:06:17,381 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 13:16:35,878 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 13:22:42,129 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 14:07:31,788 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 14:08:39,988 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 14:09:56,546 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 14:10:55,811 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 14:11:57,781 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 14:12:58,772 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')
2024-07-18 14:25:50,717 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。')

View File

@ -287,7 +287,7 @@ def cutout(im, labels, p=0.5):
xmax = min(w, xmin + mask_w) xmax = min(w, xmin + mask_w)
ymax = min(h, ymin + mask_h) ymax = min(h, ymin + mask_h)
# apply random color mask # apply random color leaf
im[ymin:ymax, xmin:xmax] = [random.randint(64, 191) for _ in range(3)] im[ymin:ymax, xmin:xmax] = [random.randint(64, 191) for _ in range(3)]
# return unobscured labels # return unobscured labels

View File

@ -1048,7 +1048,7 @@ def non_max_suppression(
merge = False # use merge-NMS merge = False # use merge-NMS
t = time.time() t = time.time()
mi = 5 + nc # mask start index mi = 5 + nc # leaf start index
output = [torch.zeros((0, 6 + nm), device=prediction.device)] * bs output = [torch.zeros((0, 6 + nm), device=prediction.device)] * bs
for xi, x in enumerate(prediction): # image index, image inference for xi, x in enumerate(prediction): # image index, image inference
# Apply constraints # Apply constraints

Some files were not shown because too many files have changed in this diff Show More