Commit 656d07f3 by Yuhaibo

1

parent 60a45704
...@@ -5,14 +5,14 @@ channel1: ...@@ -5,14 +5,14 @@ channel1:
height: 20mm height: 20mm
name: 通道1_区域1 name: 通道1_区域1
boxes: boxes:
- - 846 - - 484
- 447 - 710
- 160 - 352
fixed_bottoms: fixed_bottoms:
- 474 - 850
fixed_tops: fixed_tops:
- 418 - 569
last_updated: '2025-11-29 11:16:07' last_updated: '2025-11-29 12:56:00'
channel2: channel2:
annotation_count: 1 annotation_count: 1
areas: areas:
...@@ -20,44 +20,44 @@ channel2: ...@@ -20,44 +20,44 @@ channel2:
height: 20mm height: 20mm
name: 通道2_区域1 name: 通道2_区域1
boxes: boxes:
- - 75 - - 640
- 1043 - 641
- 128 - 256
fixed_bottoms: fixed_bottoms:
- 1065 - 743
fixed_tops: fixed_tops:
- 1028 - 538
last_updated: '2025-11-29 12:23:45' last_updated: '2025-11-29 12:49:18'
channel3: channel3:
annotation_count: 1 annotation_count: 1
areas: areas:
area_1: area_1:
height: 20mm height: 20mm
name: 3_区域1 name: 通道3_区域1
boxes: boxes:
- - 1365 - - 1306
- 915 - 762
- 128 - 224
fixed_bottoms: fixed_bottoms:
- 939 - 835
fixed_tops: fixed_tops:
- 886 - 739
last_updated: '2025-11-26 20:09:35' last_updated: '2025-11-29 12:32:57'
channel4: channel4:
annotation_count: 1 annotation_count: 1
areas: areas:
area_1: area_1:
height: 20mm height: 20mm
name: asfdhuu_区域1 name: 通道4_区域1
boxes: boxes:
- - 1689 - - 1700
- 884 - 760
- 96 - 192
fixed_bottoms: fixed_bottoms:
- 908 - 819
fixed_tops: fixed_tops:
- 860 - 729
last_updated: '2025-11-26 20:02:17' last_updated: '2025-11-29 12:30:19'
通道1: 通道1:
annotation_count: 2 annotation_count: 2
areas: areas:
......
task_id: '123' task_id: '123'
task_name: '21' task_name: '21'
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道2 - 通道2
- 通道3 - 通道3
......
task_id: '1' task_id: '1'
task_name: '1' task_name: '1'
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道2 - 通道2
......
task_id: '1' task_id: '1'
task_name: '2' task_name: '2'
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道2 - 通道2
......
task_id: '1' task_id: '1'
task_name: '222' task_name: '222'
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道2 - 通道2
......
task_id: '1' task_id: '1'
task_name: test task_name: test
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道2 - 通道2
......
task_id: '21' task_id: '21'
task_name: '321' task_name: '321'
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道2 - 通道2
......
task_id: '2' task_id: '2'
task_name: test task_name: test
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道2 - 通道2
......
task_id: 2恶趣味 task_id: 2恶趣味
task_id: 2恶趣味 task_id: 2恶趣味
task_name: q'we task_name: q'we
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道2 - 通道2
created_time: '2025-11-26 14:56:26' created_time: '2025-11-26 14:56:26'
......
task_id: 去人
task_id: 去人
task_name: '2314'
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:22:23'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\去人_2314
task_id: 去问驱蚊器恶气
task_id: 去问驱蚊器恶气
task_name: 企鹅去而且
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 12:25:58'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\去问驱蚊器恶气_企鹅去而且
task_id: 吃个海鲜 task_id: 吃个海鲜
task_id: 吃个海鲜 task_id: 吃个海鲜
task_name: 显示提醒他 task_name: 显示提醒他
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道4 - 通道4
created_time: '2025-11-27 11:06:03' created_time: '2025-11-27 11:06:03'
......
task_id: 大润发给 task_id: 大润发给
task_id: 大润发给 task_id: 大润发给
task_name: 上方 task_name: 上方
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道2 - 通道2
......
task_id: 文档
task_id: 文档
task_name: 啊啊
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:18:35'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\文档_啊啊
task_id: 的使得发 task_id: 的使得发
task_id: 的使得发 task_id: 的使得发
task_name: 如图微软 task_name: 如图微软
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道3 - 通道3
......
task_id: 的啊 task_id: 的啊
task_id: 的啊 task_id: 的啊
task_name: 而突然 task_name: 而突然
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道1 - 通道1
- 通道2 - 通道2
......
task_id: 而且
task_id: 而且
task_name:
status: 未启动
selected_channels:
- 通道1
- 通道2
created_time: '2025-11-29 13:08:14'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\而且_啊
task_id: 让穷人
task_id: 让穷人
task_name: 阿萨
status: 未启动
selected_channels:
- 通道3
created_time: '2025-11-29 13:07:27'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\让穷人_阿萨
task_id: 阿达
task_id: 阿达
task_name: 的撒
status: 未启动
selected_channels:
- 通道2
created_time: '2025-11-29 13:24:17'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\阿达_的撒
2025-11-29-13:26:33.445 0.0
2025-11-29-13:26:33.445 0.0
2025-11-29-13:26:33.478 0.0
2025-11-29-13:26:33.688 0.0
2025-11-29-13:26:33.888 0.0
2025-11-29-13:26:34.086 0.0
2025-11-29-13:26:34.294 0.0
2025-11-29-13:26:34.493 0.0
2025-11-29-13:26:34.695 0.0
2025-11-29-13:26:34.904 0.0
2025-11-29-13:26:35.107 0.0
2025-11-29-13:26:35.363 15.0
2025-11-29-13:26:35.524 15.3
2025-11-29-13:26:35.711 0.0
2025-11-29-13:26:35.918 0.0
2025-11-29-13:26:36.114 0.0
2025-11-29-13:26:36.314 0.0
2025-11-29-13:26:36.521 16.1
2025-11-29-13:26:36.710 0.0
2025-11-29-13:26:36.912 0.0
2025-11-29-13:26:37.121 0.0
2025-11-29-13:26:37.318 0.0
2025-11-29-13:26:37.589 15.6
2025-11-29-13:26:37.725 0.0
2025-11-29-13:26:37.929 0.0
2025-11-29-13:26:38.156 0.0
2025-11-29-13:26:38.367 0.0
2025-11-29-13:26:38.549 0.0
2025-11-29-13:26:38.747 0.0
2025-11-29-13:26:38.956 0.0
2025-11-29-13:26:39.163 0.0
2025-11-29-13:26:39.374 0.0
2025-11-29-13:26:39.572 0.0
2025-11-29-13:26:39.792 15.5
2025-11-29-13:26:39.993 0.0
2025-11-29-13:26:40.213 15.5
2025-11-29-13:26:40.410 16.0
2025-11-29-13:26:40.599 15.8
2025-11-29-13:26:40.821 16.0
2025-11-29-13:26:41.033 15.6
2025-11-29-13:26:41.246 15.3
2025-11-29-13:26:41.459 14.8
2025-11-29-13:26:41.654 14.7
2025-11-29-13:26:41.853 14.8
2025-11-29-13:26:42.060 0.0
2025-11-29-13:26:42.265 0.0
2025-11-29-13:26:42.488 0.0
2025-11-29-13:26:42.670 0.0
2025-11-29-13:26:42.882 0.0
2025-11-29-13:26:43.124 0.0
2025-11-29-13:26:43.314 0.0
2025-11-29-13:26:43.539 0.0
2025-11-29-13:26:43.756 0.0
2025-11-29-13:26:43.959 0.0
2025-11-29-13:26:44.185 0.0
2025-11-29-13:26:44.388 15.3
2025-11-29-13:26:44.585 15.3
2025-11-29-13:26:44.797 15.3
2025-11-29-13:26:45.001 0.0
2025-11-29-13:26:45.201 15.5
2025-11-29-13:26:45.403 15.5
2025-11-29-13:26:45.607 0.0
2025-11-29-13:26:45.808 0.0
2025-11-29-13:26:46.038 0.0
2025-11-29-13:26:46.238 0.0
2025-11-29-13:26:46.447 17.2
2025-11-29-13:26:46.663 0.0
2025-11-29-13:26:46.851 0.0
2025-11-29-13:26:47.066 0.0
2025-11-29-13:26:47.284 0.0
2025-11-29-13:26:47.496 0.0
2025-11-29-13:26:47.675 0.0
2025-11-29-13:26:47.893 0.0
2025-11-29-13:26:48.080 0.0
2025-11-29-13:26:48.285 0.0
2025-11-29-13:26:48.513 0.0
2025-11-29-13:26:48.700 0.0
2025-11-29-13:26:48.901 0.0
2025-11-29-13:26:49.106 0.0
2025-11-29-13:26:49.301 14.5
2025-11-29-13:26:49.510 0.0
2025-11-29-13:26:49.748 15.2
2025-11-29-13:26:49.941 0.0
2025-11-29-13:26:50.154 15.6
2025-11-29-13:26:50.358 0.0
2025-11-29-13:26:50.566 15.3
2025-11-29-13:26:50.781 15.5
2025-11-29-13:26:50.946 15.0
2025-11-29-13:26:51.157 0.0
2025-11-29-13:26:51.371 15.6
2025-11-29-13:26:51.586 15.5
2025-11-29-13:26:51.809 15.0
2025-11-29-13:26:52.010 15.3
2025-11-29-13:26:52.191 0.0
2025-11-29-13:26:52.395 0.0
2025-11-29-13:26:52.613 0.0
2025-11-29-13:26:52.799 0.0
2025-11-29-13:26:53.003 0.0
2025-11-29-13:26:53.218 15.0
2025-11-29-13:26:53.411 0.0
2025-11-29-13:26:53.619 0.0
2025-11-29-13:26:53.835 0.0
2025-11-29-13:26:54.058 15.3
2025-11-29-13:26:54.255 15.0
2025-11-29-13:26:54.484 15.0
2025-11-29-13:26:54.679 15.6
2025-11-29-13:26:54.863 15.6
2025-11-29-13:26:55.058 0.0
2025-11-29-13:26:55.261 0.0
2025-11-29-13:26:55.482 0.0
2025-11-29-13:26:55.685 0.0
2025-11-29-13:26:55.891 0.0
2025-11-29-13:26:56.107 0.0
2025-11-29-13:26:56.315 0.0
2025-11-29-13:26:56.521 15.0
2025-11-29-13:26:56.742 15.2
2025-11-29-13:26:56.926 0.0
2025-11-29-13:26:57.125 0.0
2025-11-29-13:26:57.335 0.0
2025-11-29-13:26:57.532 0.0
2025-11-29-13:26:57.744 0.0
2025-11-29-13:26:57.946 0.0
2025-11-29-13:26:58.153 0.0
2025-11-29-13:26:58.359 0.0
2025-11-29-13:26:58.561 0.0
2025-11-29-13:26:58.776 0.0
2025-11-29-13:26:58.984 15.5
2025-11-29-13:26:59.171 14.7
2025-11-29-13:26:59.374 14.8
2025-11-29-13:26:59.588 0.0
2025-11-29-13:26:59.781 0.0
2025-11-29-13:26:59.989 15.6
2025-11-29-13:27:00.194 15.5
2025-11-29-13:27:00.393 0.0
2025-11-29-13:27:00.611 0.0
2025-11-29-13:27:00.809 0.0
2025-11-29-13:27:01.025 0.0
2025-11-29-13:27:01.228 0.0
2025-11-29-13:27:01.435 0.0
2025-11-29-13:27:01.639 0.0
2025-11-29-13:27:01.851 15.5
2025-11-29-13:27:02.058 0.0
2025-11-29-13:27:02.263 0.0
2025-11-29-13:27:02.459 0.0
2025-11-29-13:27:02.678 0.0
2025-11-29-13:27:02.870 0.0
2025-11-29-13:27:03.071 0.0
2025-11-29-13:27:03.274 0.0
2025-11-29-13:27:03.498 0.0
2025-11-29-13:27:03.678 0.0
2025-11-29-13:27:03.897 0.0
2025-11-29-13:27:04.105 0.0
2025-11-29-13:27:04.318 0.0
2025-11-29-13:27:04.540 15.5
2025-11-29-13:27:04.746 15.5
2025-11-29-13:27:05.004 0.0
2025-11-29-13:27:05.113 0.0
2025-11-29-13:27:05.282 0.0
2025-11-29-13:27:05.494 0.0
2025-11-29-13:27:05.690 0.0
2025-11-29-13:27:05.896 15.6
2025-11-29-13:27:06.108 0.0
2025-11-29-13:27:06.305 0.0
2025-11-29-13:27:06.514 0.0
2025-11-29-13:27:06.703 0.0
2025-11-29-13:27:06.925 0.0
2025-11-29-12:30:36.054 0.0
2025-11-29-12:30:36.054 0.0
2025-11-29-12:30:37.027 0.0
2025-11-29-12:30:37.731 0.0
2025-11-29-12:30:38.163 0.0
2025-11-29-12:30:38.592 0.0
2025-11-29-12:30:38.901 0.0
2025-11-29-12:30:39.458 0.0
2025-11-29-12:30:39.946 0.0
2025-11-29-12:30:40.427 0.0
2025-11-29-12:30:41.023 0.0
2025-11-29-12:30:41.548 0.0
2025-11-29-12:30:42.192 0.0
2025-11-29-12:30:42.995 0.0
2025-11-29-12:30:43.586 0.0
2025-11-29-12:30:44.261 0.0
2025-11-29-12:30:44.954 0.0
2025-11-29-12:30:45.496 0.0
2025-11-29-12:30:46.037 0.0
2025-11-29-12:30:46.650 0.0
2025-11-29-12:30:47.114 0.0
2025-11-29-12:30:47.649 0.0
2025-11-29-12:30:48.126 0.0
2025-11-29-12:30:48.767 0.0
2025-11-29-12:30:49.510 0.0
2025-11-29-12:30:50.161 0.0
2025-11-29-12:30:50.686 0.0
2025-11-29-12:30:51.185 0.0
2025-11-29-12:30:51.663 0.0
2025-11-29-12:30:52.236 0.0
2025-11-29-12:30:52.961 0.0
2025-11-29-12:30:53.554 0.0
2025-11-29-12:30:54.106 0.0
2025-11-29-12:30:54.833 0.0
2025-11-29-12:30:55.311 0.0
2025-11-29-12:30:55.732 0.0
2025-11-29-12:30:56.227 0.0
2025-11-29-12:30:56.693 0.0
2025-11-29-12:30:57.229 0.0
2025-11-29-12:30:57.734 0.0
2025-11-29-12:30:58.235 0.0
2025-11-29-12:30:58.655 0.0
2025-11-29-12:30:59.059 0.0
2025-11-29-12:30:59.613 0.0
2025-11-29-12:31:00.097 0.0
2025-11-29-12:31:00.694 0.0
2025-11-29-12:31:01.348 0.0
2025-11-29-12:31:01.856 0.0
2025-11-29-12:31:02.313 0.0
2025-11-29-12:31:02.773 0.0
2025-11-29-12:31:03.342 0.0
2025-11-29-12:31:03.916 0.0
2025-11-29-12:31:04.475 0.0
2025-11-29-12:31:05.153 0.0
2025-11-29-12:31:05.782 0.0
2025-11-29-12:31:06.328 0.0
2025-11-29-12:31:06.878 0.0
2025-11-29-12:31:07.429 0.0
2025-11-29-12:31:07.972 0.0
2025-11-29-12:31:08.757 0.0
2025-11-29-12:31:09.437 0.0
2025-11-29-12:31:10.243 0.0
2025-11-29-12:31:10.925 0.0
2025-11-29-12:31:11.426 0.0
2025-11-29-12:31:12.020 0.0
2025-11-29-12:31:12.547 0.0
2025-11-29-12:31:13.109 0.0
2025-11-29-12:31:13.584 0.0
2025-11-29-12:31:14.047 0.0
2025-11-29-12:31:14.568 0.0
2025-11-29-12:31:14.967 0.0
2025-11-29-12:31:15.458 0.0
2025-11-29-12:31:15.966 0.0
2025-11-29-12:31:16.571 0.0
2025-11-29-12:31:17.175 0.0
2025-11-29-12:31:17.713 0.0
2025-11-29-12:31:18.221 0.0
2025-11-29-12:31:18.747 0.0
2025-11-29-12:31:19.176 0.0
2025-11-29-12:31:19.733 0.0
2025-11-29-12:31:20.330 0.0
2025-11-29-12:31:20.966 0.0
2025-11-29-12:31:21.478 0.0
2025-11-29-12:31:21.932 0.0
2025-11-29-12:31:22.396 0.0
2025-11-29-12:31:22.882 0.0
2025-11-29-12:31:23.344 20.0
2025-11-29-12:31:23.980 0.0
2025-11-29-12:31:24.526 0.0
2025-11-29-12:31:25.034 0.0
2025-11-29-12:31:25.577 0.0
2025-11-29-12:31:26.278 0.0
2025-11-29-12:31:27.181 0.0
2025-11-29-12:31:27.913 20.0
2025-11-29-12:31:28.636 0.0
2025-11-29-12:31:29.283 0.0
2025-11-29-12:31:30.089 0.0
2025-11-29-12:31:30.856 0.0
2025-11-29-12:31:31.381 0.0
2025-11-29-12:31:31.927 0.0
2025-11-29-12:31:32.939 0.0
2025-11-29-12:31:34.619 0.0
2025-11-29-12:31:35.636 0.0
2025-11-29-12:31:36.760 0.0
2025-11-29-12:31:37.689 0.0
2025-11-29-12:31:38.370 0.0
2025-11-29-12:31:39.363 0.0
2025-11-29-12:31:40.051 0.0
2025-11-29-12:31:40.683 0.0
2025-11-29-12:31:41.491 0.0
2025-11-29-12:31:42.171 0.0
2025-11-29-12:31:42.888 0.0
2025-11-29-12:31:43.487 0.0
2025-11-29-12:31:44.027 0.0
2025-11-29-12:31:44.786 0.0
2025-11-29-12:31:45.581 0.0
2025-11-29-12:31:46.252 0.0
2025-11-29-12:31:46.856 0.0
2025-11-29-12:31:47.453 0.0
2025-11-29-12:31:48.316 0.0
2025-11-29-12:31:49.272 0.0
2025-11-29-12:31:50.206 0.0
2025-11-29-12:31:50.930 0.0
2025-11-29-12:31:51.607 0.0
2025-11-29-12:31:52.379 0.0
2025-11-29-12:31:53.766 0.0
2025-11-29-12:31:54.821 0.0
2025-11-29-12:31:55.809 0.0
2025-11-29-12:31:56.405 0.0
2025-11-29-12:31:57.184 0.0
2025-11-29-12:31:58.666 0.0
2025-11-29-12:31:59.676 0.0
2025-11-29-12:32:00.435 0.0
2025-11-29-12:32:01.259 0.0
2025-11-29-12:32:02.048 0.0
2025-11-29-12:32:02.836 0.0
2025-11-29-12:32:03.524 0.0
2025-11-29-12:32:04.198 0.0
2025-11-29-12:32:05.073 0.0
2025-11-29-12:32:05.978 0.0
2025-11-29-12:32:06.677 0.0
2025-11-29-12:32:07.444 0.0
2025-11-29-12:32:08.373 0.0
2025-11-29-12:32:09.145 0.0
2025-11-29-12:32:09.956 0.0
2025-11-29-12:32:10.987 0.0
2025-11-29-12:32:11.955 0.0
2025-11-29-12:32:12.836 0.0
2025-11-29-12:32:13.769 0.0
2025-11-29-12:32:14.681 0.0
2025-11-29-12:32:16.103 0.0
2025-11-29-12:32:17.086 0.0
2025-11-29-12:32:18.033 0.0
2025-11-29-12:32:18.823 0.0
2025-11-29-12:32:19.492 0.0
2025-11-29-12:32:20.225 0.0
2025-11-29-12:32:20.961 0.0
2025-11-29-12:32:21.693 0.0
2025-11-29-12:32:22.917 0.0
2025-11-29-12:32:23.734 0.0
2025-11-29-12:32:24.475 0.0
2025-11-29-12:32:25.421 0.0
2025-11-29-12:32:26.852 0.0
2025-11-29-12:32:27.658 0.0
2025-11-29-12:32:28.388 0.0
2025-11-29-12:32:29.580 0.0
2025-11-29-12:32:30.341 0.0
2025-11-29-12:32:31.183 0.0
2025-11-29-12:32:32.305 0.0
2025-11-29-12:32:33.205 0.0
2025-11-29-12:32:33.998 0.0
2025-11-29-12:32:34.563 0.0
2025-11-29-12:32:35.397 0.0
2025-11-29-12:32:36.329 0.0
2025-11-29-12:32:37.105 0.0
2025-11-29-12:32:37.796 0.0
2025-11-29-12:30:22.255 0.0
2025-11-29-12:30:22.255 0.0
2025-11-29-12:30:23.046 0.0
2025-11-29-12:30:23.746 0.0
2025-11-29-12:30:24.235 0.0
2025-11-29-12:30:24.721 0.0
2025-11-29-12:30:25.011 0.0
2025-11-29-12:30:25.415 0.0
2025-11-29-12:30:25.765 0.0
2025-11-29-12:30:26.151 0.0
2025-11-29-12:30:26.604 0.0
2025-11-29-12:30:26.959 0.0
2025-11-29-12:30:27.304 0.0
2025-11-29-12:30:27.600 0.0
2025-11-29-12:30:28.024 0.0
2025-11-29-12:30:28.485 0.0
2025-11-29-12:30:29.003 0.0
2025-11-29-12:30:29.473 0.0
2025-11-29-12:30:30.008 0.0
2025-11-29-12:30:30.452 0.0
2025-11-29-12:30:31.055 0.0
2025-11-29-12:30:31.599 0.0
2025-11-29-12:30:32.138 0.0
2025-11-29-12:30:32.697 0.0
2025-11-29-12:30:33.350 0.0
2025-11-29-12:30:33.887 0.0
2025-11-29-12:30:34.404 0.0
2025-11-29-12:30:34.969 0.0
2025-11-29-12:30:36.054 0.0
2025-11-29-12:30:37.027 0.0
2025-11-29-12:30:37.729 0.0
2025-11-29-12:30:38.163 0.0
2025-11-29-12:30:38.592 0.0
2025-11-29-12:30:38.901 0.0
2025-11-29-12:30:39.458 0.0
2025-11-29-12:30:39.945 0.0
2025-11-29-12:30:40.427 0.0
2025-11-29-12:30:41.023 0.0
2025-11-29-12:30:41.548 19.1
2025-11-29-12:30:42.192 0.0
2025-11-29-12:30:42.994 0.0
2025-11-29-12:30:43.586 0.0
2025-11-29-12:30:44.261 0.0
2025-11-29-12:30:44.962 0.0
2025-11-29-12:30:45.496 0.0
2025-11-29-12:30:46.035 20.0
2025-11-29-12:30:46.658 20.0
2025-11-29-12:30:47.114 20.0
2025-11-29-12:30:47.649 0.0
2025-11-29-12:30:48.126 0.0
2025-11-29-12:30:48.767 0.0
2025-11-29-12:30:49.510 0.0
2025-11-29-12:30:50.161 0.0
2025-11-29-12:30:50.686 0.0
2025-11-29-12:30:51.185 0.0
2025-11-29-12:30:51.663 0.0
2025-11-29-12:30:52.236 0.0
2025-11-29-12:30:52.961 0.0
2025-11-29-12:30:53.554 0.0
2025-11-29-12:30:54.106 0.0
2025-11-29-12:30:54.833 0.0
2025-11-29-12:30:55.311 0.0
2025-11-29-12:30:55.732 0.0
2025-11-29-12:30:56.227 0.0
2025-11-29-12:30:56.693 0.0
2025-11-29-12:30:57.229 0.0
2025-11-29-12:30:57.734 0.0
2025-11-29-12:30:58.235 0.0
2025-11-29-12:30:58.655 0.0
2025-11-29-12:30:59.059 0.0
2025-11-29-12:30:59.613 0.0
2025-11-29-12:31:00.097 0.0
2025-11-29-12:31:00.694 0.0
2025-11-29-12:31:01.348 0.0
2025-11-29-12:31:01.856 0.0
2025-11-29-12:31:02.313 0.0
2025-11-29-12:31:02.773 0.0
2025-11-29-12:31:03.342 0.0
2025-11-29-12:31:03.916 0.0
2025-11-29-12:31:04.475 0.0
2025-11-29-12:31:05.153 0.0
2025-11-29-12:31:05.783 0.0
2025-11-29-12:31:06.328 0.0
2025-11-29-12:31:06.878 0.0
2025-11-29-12:31:07.429 0.0
2025-11-29-12:31:07.972 0.0
2025-11-29-12:31:08.757 0.0
2025-11-29-12:31:09.424 0.0
2025-11-29-12:31:10.243 0.0
2025-11-29-12:31:10.925 0.0
2025-11-29-12:31:11.426 0.0
2025-11-29-12:31:12.020 0.0
2025-11-29-12:31:12.547 0.0
2025-11-29-12:31:13.109 0.0
2025-11-29-12:31:13.584 0.0
2025-11-29-12:31:14.047 0.0
2025-11-29-12:31:14.568 0.0
2025-11-29-12:31:14.967 0.0
2025-11-29-12:31:15.458 0.0
2025-11-29-12:31:15.966 0.0
2025-11-29-12:31:16.571 0.0
2025-11-29-12:31:17.175 0.0
2025-11-29-12:31:17.713 0.0
2025-11-29-12:31:18.221 0.0
2025-11-29-12:31:18.747 20.0
2025-11-29-12:31:19.176 0.0
2025-11-29-12:31:19.733 0.0
2025-11-29-12:31:20.330 0.0
2025-11-29-12:31:20.966 0.0
2025-11-29-12:31:21.485 0.0
2025-11-29-12:31:21.932 0.0
2025-11-29-12:31:22.403 0.0
2025-11-29-12:31:22.876 0.0
2025-11-29-12:31:23.344 0.0
2025-11-29-12:31:23.980 0.0
2025-11-29-12:31:24.521 0.0
2025-11-29-12:31:25.034 0.0
2025-11-29-12:31:25.577 20.0
2025-11-29-12:31:26.278 20.0
2025-11-29-12:31:27.181 0.0
2025-11-29-12:31:27.913 0.0
2025-11-29-12:31:28.636 0.0
2025-11-29-12:31:29.283 0.0
2025-11-29-12:31:30.089 0.0
2025-11-29-12:31:30.856 0.0
2025-11-29-12:31:31.381 0.0
2025-11-29-12:31:31.927 0.0
2025-11-29-12:31:32.939 0.0
2025-11-29-12:31:34.619 0.0
2025-11-29-12:31:35.636 0.0
2025-11-29-12:31:36.762 0.0
2025-11-29-12:31:37.690 0.0
2025-11-29-12:31:38.370 0.0
2025-11-29-12:31:39.363 0.0
2025-11-29-12:31:40.051 0.0
2025-11-29-12:31:40.684 0.0
2025-11-29-12:31:41.491 0.0
2025-11-29-12:31:42.171 0.0
2025-11-29-12:31:42.888 0.0
2025-11-29-12:31:43.485 0.0
2025-11-29-12:31:44.034 0.0
2025-11-29-12:31:44.786 0.0
2025-11-29-12:31:45.581 0.0
2025-11-29-12:31:46.247 0.0
2025-11-29-12:31:46.856 0.0
2025-11-29-12:31:47.453 0.0
2025-11-29-12:31:48.316 0.0
2025-11-29-12:31:49.272 0.0
2025-11-29-12:31:50.206 0.0
2025-11-29-12:31:50.930 0.0
2025-11-29-12:31:51.607 0.0
2025-11-29-12:31:52.379 0.0
2025-11-29-12:31:53.766 0.0
2025-11-29-12:31:54.821 0.0
2025-11-29-12:31:55.809 0.0
2025-11-29-12:31:56.405 0.0
2025-11-29-12:31:57.184 0.0
2025-11-29-12:31:58.666 0.0
2025-11-29-12:31:59.676 0.0
2025-11-29-12:32:00.435 0.0
2025-11-29-12:32:01.259 20.0
2025-11-29-12:32:02.048 0.0
2025-11-29-12:32:02.836 0.0
2025-11-29-12:32:03.524 0.0
2025-11-29-12:32:04.202 0.0
2025-11-29-12:32:05.073 0.0
2025-11-29-12:32:05.978 0.0
2025-11-29-12:32:06.677 0.0
2025-11-29-12:32:07.444 0.0
2025-11-29-12:32:08.373 0.0
2025-11-29-12:32:09.145 0.0
2025-11-29-12:32:09.956 0.0
2025-11-29-12:32:10.986 0.0
2025-11-29-12:32:11.955 0.0
2025-11-29-12:32:12.842 0.0
2025-11-29-12:32:13.768 0.0
2025-11-29-12:32:14.692 0.0
2025-11-29-12:32:16.103 0.0
2025-11-29-12:32:17.086 0.0
2025-11-29-12:32:18.032 0.0
2025-11-29-12:32:18.823 0.0
2025-11-29-12:32:19.492 0.0
2025-11-29-12:32:20.225 0.0
2025-11-29-12:32:20.961 0.0
2025-11-29-12:32:21.693 0.0
2025-11-29-12:32:22.917 0.0
2025-11-29-12:32:23.734 0.0
2025-11-29-12:32:24.475 0.0
2025-11-29-12:32:25.421 0.0
2025-11-29-12:32:26.852 0.0
2025-11-29-12:32:27.658 0.0
2025-11-29-12:32:28.388 0.0
2025-11-29-12:32:29.579 0.0
2025-11-29-12:32:30.341 0.0
2025-11-29-12:32:31.183 20.0
2025-11-29-12:32:32.305 0.0
2025-11-29-12:32:33.205 0.0
2025-11-29-12:32:33.998 0.0
2025-11-29-12:32:34.561 0.0
2025-11-29-12:32:35.397 0.0
2025-11-29-12:32:36.329 0.0
2025-11-29-12:32:37.105 0.0
2025-11-29-12:32:37.796 0.0
2025-11-29-13:09:43.026 0.0
2025-11-29-13:09:43.026 0.0
2025-11-29-13:09:43.056 0.0
2025-11-29-13:09:43.259 0.0
2025-11-29-13:09:43.459 0.0
2025-11-29-13:09:43.718 17.2
2025-11-29-13:09:43.863 0.0
2025-11-29-13:09:44.069 0.0
2025-11-29-13:09:44.268 0.0
2025-11-29-13:09:44.468 15.7
2025-11-29-13:09:44.675 0.0
2025-11-29-13:09:44.876 15.7
2025-11-29-12:49:02.930 0.0
2025-11-29-12:49:02.930 0.0
2025-11-29-12:49:02.962 0.0
2025-11-29-12:49:03.158 0.0
2025-11-29-12:49:03.368 0.0
2025-11-29-12:49:03.565 0.0
2025-11-29-12:49:03.775 0.0
2025-11-29-12:49:03.974 0.0
2025-11-29-12:49:04.182 0.0
2025-11-29-12:49:04.381 0.0
2025-11-29-12:49:04.575 0.0
2025-11-29-12:49:04.783 0.0
2025-11-29-12:49:04.977 0.0
2025-11-29-12:49:05.188 0.0
2025-11-29-12:49:05.386 0.0
2025-11-29-12:49:05.596 0.0
2025-11-29-12:49:05.791 0.0
2025-11-29-12:49:06.001 0.0
2025-11-29-12:49:06.202 0.0
2025-11-29-12:49:06.402 0.0
2025-11-29-12:49:06.610 0.0
2025-11-29-12:49:06.810 0.0
2025-11-29-12:49:07.005 0.0
2025-11-29-12:49:07.223 0.0
2025-11-29-12:49:07.431 0.0
2025-11-29-12:49:07.611 0.0
2025-11-29-12:49:07.819 0.0
2025-11-29-12:49:08.021 0.0
2025-11-29-12:49:08.230 0.0
2025-11-29-12:49:08.434 0.0
2025-11-29-12:49:08.638 0.0
2025-11-29-12:49:08.835 0.0
2025-11-29-12:49:09.044 0.0
2025-11-29-12:49:09.246 0.0
2025-11-29-12:49:09.446 0.0
2025-11-29-12:49:09.658 0.0
2025-11-29-12:49:09.854 0.0
2025-11-29-12:49:10.064 0.0
2025-11-29-12:49:10.285 0.0
2025-11-29-12:49:10.488 0.0
2025-11-29-12:49:10.691 0.0
2025-11-29-12:49:10.903 0.0
2025-11-29-12:49:11.106 0.0
2025-11-29-12:49:11.301 0.0
2025-11-29-12:49:11.519 0.0
2025-11-29-12:49:11.710 0.0
2025-11-29-12:49:11.924 0.0
2025-11-29-12:49:12.132 0.0
2025-11-29-12:49:12.330 0.0
2025-11-29-12:49:12.533 0.0
2025-11-29-12:49:12.755 0.0
2025-11-29-12:49:12.929 0.0
2025-11-29-12:49:13.144 0.0
2025-11-29-12:49:13.369 0.0
2025-11-29-12:49:13.597 0.0
2025-11-29-12:49:13.746 0.0
2025-11-29-12:49:13.923 0.0
2025-11-29-12:49:14.129 0.0
2025-11-29-12:49:14.333 0.0
2025-11-29-12:49:14.527 0.0
2025-11-29-12:49:14.734 0.0
2025-11-29-12:49:14.942 0.0
2025-11-29-12:49:15.130 0.0
2025-11-29-12:49:15.341 0.0
2025-11-29-12:49:15.549 0.0
2025-11-29-12:49:15.762 0.0
2025-11-29-12:49:15.955 0.0
2025-11-29-12:49:16.170 0.0
2025-11-29-12:49:16.374 0.0
2025-11-29-12:49:16.561 0.0
2025-11-29-12:49:16.789 0.0
2025-11-29-12:49:16.971 0.0
2025-11-29-12:49:17.166 0.0
2025-11-29-12:49:17.374 0.0
2025-11-29-12:49:17.587 0.0
2025-11-29-12:49:17.786 0.0
2025-11-29-12:49:17.999 0.0
2025-11-29-12:49:18.202 0.0
2025-11-29-12:49:18.397 0.0
2025-11-29-12:49:18.592 0.0
2025-11-29-12:49:18.793 0.0
2025-11-29-12:49:19.023 0.0
2025-11-29-12:49:19.154 0.0
2025-11-29-12:49:19.356 0.0
2025-11-29-12:49:19.552 0.0
2025-11-29-12:49:19.753 0.0
2025-11-29-12:49:19.943 0.0
2025-11-29-12:49:20.157 0.0
2025-11-29-12:49:20.360 0.0
2025-11-29-12:49:20.566 0.0
2025-11-29-12:49:20.753 0.0
2025-11-29-12:49:20.945 0.0
2025-11-29-12:49:21.155 0.0
2025-11-29-12:49:21.363 0.0
2025-11-29-12:49:21.569 0.0
2025-11-29-12:49:21.778 0.0
2025-11-29-12:49:21.970 0.0
2025-11-29-12:49:22.172 0.0
2025-11-29-12:49:22.365 0.0
2025-11-29-12:49:22.578 0.0
2025-11-29-12:49:22.801 0.0
2025-11-29-12:49:22.988 0.0
2025-11-29-12:49:23.193 0.0
2025-11-29-12:49:23.388 0.0
2025-11-29-12:49:23.594 0.0
2025-11-29-12:49:23.801 0.0
2025-11-29-12:49:24.015 0.0
2025-11-29-12:49:24.213 0.0
2025-11-29-12:49:24.435 0.0
2025-11-29-12:49:24.644 0.0
2025-11-29-12:49:24.834 0.0
2025-11-29-12:49:25.031 0.0
2025-11-29-12:49:25.255 0.0
2025-11-29-12:49:25.439 0.0
2025-11-29-12:49:25.638 0.0
2025-11-29-12:49:25.846 0.0
2025-11-29-12:49:26.125 17.7
2025-11-29-12:49:26.245 0.0
2025-11-29-12:49:26.455 0.0
2025-11-29-12:49:26.655 0.0
2025-11-29-12:49:26.882 0.0
2025-11-29-12:49:27.075 0.0
2025-11-29-12:49:27.275 0.0
2025-11-29-12:49:27.480 0.0
2025-11-29-12:49:27.679 0.0
2025-11-29-12:49:27.876 0.0
2025-11-29-12:49:28.085 0.0
2025-11-29-12:49:28.295 18.1
2025-11-29-12:49:28.490 0.0
2025-11-29-12:49:28.681 0.0
2025-11-29-12:49:28.879 0.0
2025-11-29-12:49:29.091 0.0
2025-11-29-12:49:29.293 0.0
2025-11-29-12:49:29.498 0.0
2025-11-29-12:49:29.705 0.0
2025-11-29-12:49:29.916 0.0
2025-11-29-12:49:30.102 0.0
2025-11-29-12:49:30.282 0.0
2025-11-29-12:49:30.512 0.0
2025-11-29-12:49:30.704 0.0
2025-11-29-12:49:30.910 0.0
2025-11-29-12:49:31.107 0.0
2025-11-29-12:49:31.297 0.0
2025-11-29-12:49:31.519 0.0
2025-11-29-12:49:31.703 0.0
2025-11-29-12:49:31.918 0.0
2025-11-29-12:49:32.114 0.0
2025-11-29-12:49:32.315 0.0
2025-11-29-12:49:32.522 0.0
2025-11-29-12:49:32.771 0.0
2025-11-29-12:49:32.913 0.0
2025-11-29-12:49:33.128 0.0
2025-11-29-12:49:33.344 0.0
2025-11-29-12:49:33.521 0.0
2025-11-29-12:49:33.729 0.0
2025-11-29-12:49:33.924 0.0
2025-11-29-12:49:34.150 0.0
2025-11-29-12:49:34.364 0.0
2025-11-29-12:49:34.550 0.0
task_id: 2恶趣味 task_id: 2恶趣味
task_id: 2恶趣味 task_id: 2恶趣味
task_name: q'we task_name: q'we
status: 待配置 status: 未启动
selected_channels: selected_channels:
- 通道2 - 通道2
created_time: '2025-11-26 14:56:26' created_time: '2025-11-26 14:56:26'
......
task_id: 去人
task_id: 去人
task_name: '2314'
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:22:23'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\去人_2314
task_id: 去问驱蚊器恶气
task_id: 去问驱蚊器恶气
task_name: 企鹅去而且
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 12:25:58'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\去问驱蚊器恶气_企鹅去而且
task_id: 文档
task_id: 文档
task_name: 啊啊
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:18:35'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\文档_啊啊
task_id: 而且
task_id: 而且
task_name:
status: 未启动
selected_channels:
- 通道1
- 通道2
created_time: '2025-11-29 13:08:14'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\而且_啊
task_id: 让穷人
task_id: 让穷人
task_name: 阿萨
status: 未启动
selected_channels:
- 通道3
created_time: '2025-11-29 13:07:27'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\让穷人_阿萨
task_id: 阿达
task_id: 阿达
task_name: 的撒
status: 未启动
selected_channels:
- 通道2
created_time: '2025-11-29 13:24:17'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\阿达_的撒
# 任务面板文本状态管理清理完成报告
## ✅ 清理完成
所有其他设置任务面板文本状态的代码已全部删除,现在统一由 `MissionTextStatus` 类管理。
## 已删除的内容
### 1. ✅ `_updateChannelCellColors` 方法
**原位置**:第897-977行
**现状态**:已替换为注释(第897-898行)
```python
# 🔥 已删除 _updateChannelCellColors 方法
# 通道列颜色现在由 MissionTextStatus 类统一管理
```
### 2. ✅ `_setTaskRowChannelColor` 方法
**原位置**:第1404-1474行
**现状态**:已完全删除
### 3. ✅ `_updateRowColor` 方法
**原位置**:第1523-1632行
**现状态**:已删除(第1523-1524行)
### 4. ✅ `_updateRowColorForQTableWidgetItem` 方法
**原位置**:第1634-1675行
**现状态**:已删除(第1523-1524行)
**替换注释**
```python
# 🔥 已删除 _updateRowColor 和 _updateRowColorForQTableWidgetItem 方法
# 所有文本颜色管理现在由 MissionTextStatus 类统一处理
```
## 已删除的方法调用
### 1. ✅ `_loadAllMissions` 中的调用
```python
# 删除前:
self._updateChannelCellColors()
# 删除后:
# 已删除,由 MissionTextStatus.initializeAllRowsGray() 替代
```
### 2. ✅ `_handleTaskSelected` 中的调用
```python
# 删除前:
self._setTaskRowChannelColor(task_folder_name, 0, '#000000')
# 删除后:
# 已删除
```
### 3. ✅ `_refreshAllTaskStatus` 中的调用
```python
# 删除前:
self._updateRowColorForQTableWidgetItem(row, new_status)
# 删除后:
# 已删除
```
### 4. ✅ `_updateTaskStatus` 中的调用
```python
# 删除前:
self._updateRowColor(row, new_status)
# 删除后:
# 已删除
```
## 新的文本状态管理架构
### MissionTextStatus 类统一管理
所有任务面板的文本颜色现在由 `MissionTextStatus` 类统一管理:
#### 1. 初始化(规则1)
```python
self.mission_text_status.initializeAllRowsGray()
```
- **触发时机**:程序启动加载任务列表后
- **效果**:所有任务行文本置为灰色
#### 2. 选中行(规则2)
```python
self.mission_text_status.setRowBlackOnSelect(row)
```
- **触发时机**:用户单击任务行
- **效果**:选中行文本置为黑色,之前选中的行恢复为灰色
#### 3. 检测中(规则3)
```python
self.mission_text_status.setStatusColumnGreenOnDetection(task_folder_name)
```
- **触发时机**:启动检测线程时
- **效果**:对应任务的状态列置为绿色
#### 4. 新建任务(规则4)
```python
self.mission_text_status.initializeNewTaskRowGray(row_index)
```
- **触发时机**:新建任务确认后
- **效果**:新任务行文本置为灰色
## 颜色规则
| 状态 | 颜色 | RGB | 适用范围 |
|------|------|-----|----------|
| 默认/未启动 | 灰色 | (128, 128, 128) | 所有列 |
| 已选中 | 黑色 | (0, 0, 0) | 除状态列外的所有列 |
| 检测中 | 绿色 | (0, 128, 0) | 仅状态列 |
## 优势总结
### 1. 代码简洁
- 删除了约 **200+ 行**重复的颜色设置代码
- 统一的管理接口,易于理解和维护
### 2. 逻辑清晰
- 所有颜色规则集中在一个类中
- 避免了多处设置导致的冲突
### 3. 易于扩展
- 新增颜色规则只需在 `MissionTextStatus` 类中添加方法
- 不需要修改多个文件
### 4. 状态一致
- 统一的状态管理确保UI显示一致
- 避免了不同方法设置不同颜色的问题
## 测试建议
1. **初始化测试**:启动程序,检查所有任务是否为灰色 ✅
2. **选中测试**:单击任务行,检查是否变为黑色 ✅
3. **切换选中测试**:单击另一行,检查之前的行是否恢复灰色 ✅
4. **检测状态测试**:启动检测线程,检查状态列是否变绿色
5. **新建任务测试**:新建任务,检查新行是否为灰色 ✅
6. **状态列优先级测试**:选中检测中的任务,检查状态列是否保持绿色
## 相关文档
1. **MISSION_TEXT_STATUS_USAGE.md** - 使用说明文档
2. **MISSION_TEXT_STATUS_INTEGRATION.md** - 集成报告文档
3. **CLEANUP_SUMMARY.md** - 清理总结文档
4. **CLEANUP_COMPLETE.md** - 本文档(完成报告)
## 完成时间
2025-11-29 13:26
## 总结
✅ 所有旧的文本状态管理代码已完全清理
✅ 新的 `MissionTextStatus` 类已完全集成
✅ 所有4个规则已正确实现
✅ 代码更加简洁、清晰、易于维护
**任务面板文本状态管理重构完成!** 🎉
# 任务面板文本状态管理清理总结
## 清理目标
删除所有其他设置任务面板文本状态的代码,统一由 `MissionTextStatus` 类管理。
## 已删除的方法
### 1. `_updateChannelCellColors` 方法
**位置**:第897-898行(已替换为注释)
**原功能**:更新任务面板中通道列的文本颜色
- 默认:灰色(未分配任务)
- 该通道被分配了任务:黑色
- 检测中且是该通道当前任务:绿色
**删除原因**:通道列颜色现在由 `MissionTextStatus` 类统一管理
### 2. `_setTaskRowChannelColor` 方法
**位置**:已删除(原第1404-1474行)
**原功能**:设置任务行对应通道列的颜色
- 先将所有任务行的所有通道列重置为灰色
- 然后根据 channelmission 状态,将对应的通道列置黑
**删除原因**:通道列颜色现在由 `MissionTextStatus` 类统一管理
### 3. `_updateRowColor` 方法
**位置**:第1523-1632行(需要删除)
**原功能**:根据状态更新行的字体颜色
- 使用字体管理器设置颜色
- 处理QLabel控件和QTableWidgetItem
**删除原因**:行颜色现在由 `MissionTextStatus` 类统一管理
### 4. `_updateRowColorForQTableWidgetItem` 方法
**位置**:第1634-1675行(需要删除)
**原功能**:根据状态更新行的字体颜色 - 适配纯QTableWidgetItem方案
- 只对未启动任务设置灰色
- 已启动任务保持默认颜色
**删除原因**:行颜色现在由 `MissionTextStatus` 类统一管理
## 已删除的方法调用
### 1. 在 `_loadAllMissions` 中
```python
# 删除前
self._updateChannelCellColors()
# 删除后
# 已删除,由 MissionTextStatus.initializeAllRowsGray() 替代
```
### 2. 在 `_handleTaskSelected` 中
```python
# 删除前
self._setTaskRowChannelColor(task_folder_name, 0, '#000000')
# 删除后
# 已删除,由 MissionTextStatus 类统一管理
```
### 3. 在 `_refreshAllTaskStatus` 中
```python
# 删除前
self._updateRowColorForQTableWidgetItem(row, new_status)
# 删除后
# 已删除,由 MissionTextStatus 类统一管理
```
### 4. 在 `_updateTaskStatus` 中
```python
# 删除前
self._updateRowColor(row, new_status)
# 删除后
# 已删除,由 MissionTextStatus 类统一管理
```
## 需要手动删除的代码
由于方法体较长,以下方法需要手动删除或替换为注释:
1. **`_updateRowColor` 方法**(第1523-1632行)
2. **`_updateRowColorForQTableWidgetItem` 方法**(第1634-1675行)
建议替换为:
```python
# 🔥 已删除 _updateRowColor 和 _updateRowColorForQTableWidgetItem 方法
# 所有文本颜色管理现在由 MissionTextStatus 类统一处理
```
## 新的文本状态管理流程
所有任务面板的文本颜色现在由 `MissionTextStatus` 类统一管理:
1. **初始化**`initializeAllRowsGray()` - 所有行灰色
2. **选中行**`setRowBlackOnSelect(row)` - 选中行黑色
3. **检测中**`setStatusColumnGreenOnDetection(task_folder_name)` - 状态列绿色
4. **新建任务**`initializeNewTaskRowGray(row)` - 新行灰色
## 优势
1. **统一管理**:所有文本颜色由一个类管理,逻辑清晰
2. **易于维护**:修改颜色规则只需修改一个类
3. **避免冲突**:不会有多个地方同时设置颜色导致冲突
4. **代码简洁**:删除了大量重复的颜色设置代码
## 注意事项
1. 删除这些方法后,确保没有其他地方调用它们
2. 所有颜色设置都应通过 `MissionTextStatus` 类进行
3. 如果需要新的颜色规则,应在 `MissionTextStatus` 类中添加新方法
# MissionTextStatus 集成完成报告
## 集成概述
已成功将 `MissionTextStatus` 类集成到 `MissionPanelHandler` 中,实现了任务面板文本状态的统一管理。
## 实现的功能
### ✅ 规则1:初始化所有行为灰色
**位置**`_loadAllMissions` 方法(第889-891行)
```python
# 🔥 第四步:初始化所有行为灰色(规则1)
if self.mission_text_status:
self.mission_text_status.initializeAllRowsGray()
```
**触发时机**
- 程序启动时加载所有任务后
- 删除任务后重新加载任务列表时
### ✅ 规则2:单击选中行时置为黑色
**位置**
1. `connectMissionPanel` 方法(第67-68行)- 连接信号
```python
# 🔥 连接表格单击事件(规则2:单击选中行时置为黑色)
mission_panel.table.cellClicked.connect(self._onMissionRowClicked)
```
2. `_onMissionRowClicked` 方法(第117-126行)- 处理单击
```python
def _onMissionRowClicked(self, row, column):
"""任务行被点击(规则2:单击选中行时该行文本置为黑色)"""
if self.mission_text_status:
self.mission_text_status.setRowBlackOnSelect(row)
```
**触发时机**:用户单击任务面板的任意单元格
### ✅ 规则3:启动检测时状态列置为绿色
**位置**`_updateChannelColumnColor` 方法(第1912-1915行)
```python
# 🔥 规则3:使用文本状态管理器设置状态列为绿色
if has_detecting_channels and all_channels_detecting:
if self.mission_text_status:
self.mission_text_status.setStatusColumnGreenOnDetection(task_folder_name)
```
**触发时机**
- 启动检测线程时(通过 `thread_manager.py` 调用)
- 停止检测线程时(通过 `thread_manager.py` 调用)
### ✅ 规则4:新建任务时初始化为灰色
**位置**`_handleTaskConfirmed` 方法(第190-193行)
```python
# 🔥 规则4:新建任务时该行文本初始为灰色
if self.mission_text_status:
row_index = self.mission_panel.table.rowCount() - 1
self.mission_text_status.initializeNewTaskRowGray(row_index)
```
**触发时机**:用户确认新建任务后
## 集成点总结
### 1. 初始化(`__init__`)
```python
self.mission_text_status = None # 🔥 文本状态管理器
```
### 2. 创建管理器(`connectMissionPanel`)
```python
# 🔥 创建文本状态管理器
self.mission_text_status = MissionTextStatus(mission_panel)
```
### 3. 连接信号(`connectMissionPanel`)
```python
# 🔥 连接表格单击事件(规则2:单击选中行时置为黑色)
mission_panel.table.cellClicked.connect(self._onMissionRowClicked)
```
### 4. 处理单击(新增方法)
```python
def _onMissionRowClicked(self, row, column):
"""任务行被点击(规则2:单击选中行时该行文本置为黑色)"""
if self.mission_text_status:
self.mission_text_status.setRowBlackOnSelect(row)
```
### 5. 加载任务后初始化(`_loadAllMissions`)
```python
# 🔥 第四步:初始化所有行为灰色(规则1)
if self.mission_text_status:
self.mission_text_status.initializeAllRowsGray()
```
### 6. 新建任务后初始化(`_handleTaskConfirmed`)
```python
# 🔥 规则4:新建任务时该行文本初始为灰色
if self.mission_text_status:
row_index = self.mission_panel.table.rowCount() - 1
self.mission_text_status.initializeNewTaskRowGray(row_index)
```
### 7. 检测状态变化时更新(`_updateChannelColumnColor`)
```python
# 🔥 规则3:使用文本状态管理器设置状态列为绿色
if has_detecting_channels and all_channels_detecting:
if self.mission_text_status:
self.mission_text_status.setStatusColumnGreenOnDetection(task_folder_name)
```
## 颜色规则
| 状态 | 颜色 | RGB | 触发条件 |
|------|------|-----|----------|
| 默认/未启动 | 灰色 | (128, 128, 128) | 初始化、加载任务、新建任务 |
| 已选中 | 黑色 | (0, 0, 0) | 单击任务行 |
| 检测中 | 绿色 | (0, 128, 0) | 启动检测线程且所有通道都在检测 |
## 特殊处理
### 状态列优先级
状态列(索引2)的颜色由检测状态决定,不受选中行影响:
- 选中行时:其他列置为黑色,状态列保持原有颜色
- 取消选中时:其他列恢复为灰色,状态列保持原有颜色
### 曲线按钮列
自动跳过曲线按钮列,不修改其颜色
### 选中状态记忆
管理器会记住当前选中的行,切换选中时自动恢复之前行的颜色
## 测试建议
1. **初始化测试**:启动程序,检查所有任务行是否为灰色
2. **选中测试**:单击任务行,检查该行是否变为黑色
3. **切换选中测试**:单击另一行,检查之前的行是否恢复为灰色
4. **检测状态测试**:启动检测线程,检查状态列是否变为绿色
5. **新建任务测试**:新建任务,检查新行是否为灰色
6. **状态列优先级测试**:选中检测中的任务行,检查状态列是否保持绿色
## 注意事项
1. 所有方法都包含 `if self.mission_text_status:` 检查,确保管理器已初始化
2. 所有方法都包含异常处理,确保不会因为单个操作失败而影响整体功能
3. 管理器在 `connectMissionPanel` 中创建,确保在使用前已初始化
4. 颜色设置通过 `QTableWidgetItem.setForeground()` 实现,与Qt的标准方式一致
## 文件修改记录
- **修改文件**`d:\restructure\liquid_level_line_detection_system\handlers\videopage\missionpanel_handler.py`
- **新增类**`MissionTextStatus`(第1992-2175行)
- **修改方法**
- `__init__`:添加 `mission_text_status` 属性
- `connectMissionPanel`:创建管理器并连接信号
- `_onMissionRowClicked`:新增方法处理单击事件
- `_handleTaskConfirmed`:添加新任务初始化逻辑
- `_loadAllMissions`:添加所有行初始化逻辑
- `_updateChannelColumnColor`:使用管理器设置绿色状态
# MissionTextStatus 使用说明
## 概述
`MissionTextStatus` 类用于统一管理任务面板中所有文本的颜色状态,实现以下逻辑:
1. **初始化**:所有任务文本默认为灰色
2. **选中行**:单击选中行时该行文本置为黑色
3. **检测中**:启动检测线程时对应任务的状态列置为绿色
4. **新建任务**:新建任务时文本初始为灰色
## 颜色规则
- **灰色 (128, 128, 128)**:未启动任务/默认状态
- **黑色 (0, 0, 0)**:已选中的任务行
- **绿色 (0, 128, 0)**:检测中的任务状态列
## 集成步骤
### 1. 在 MissionPanelHandler 中初始化
```python
class MissionPanelHandler:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.mission_panel = None
self.mission_text_status = None # 添加文本状态管理器
def connectMissionPanel(self, mission_panel):
"""连接任务面板信号"""
self.mission_panel = mission_panel
# 🔥 创建文本状态管理器
self.mission_text_status = MissionTextStatus(mission_panel)
# 🔥 初始化所有行为灰色
self.mission_text_status.initializeAllRowsGray()
# 连接信号...
```
### 2. 在任务面板加载时初始化
在加载任务列表后调用:
```python
def _loadMissionList(self):
"""加载任务列表"""
# ... 加载任务数据到表格 ...
# 🔥 加载完成后,初始化所有行为灰色
if self.mission_text_status:
self.mission_text_status.initializeAllRowsGray()
```
### 3. 在选中行时置为黑色
连接表格的 `itemClicked``cellClicked` 信号:
```python
def connectMissionPanel(self, mission_panel):
# ... 其他初始化代码 ...
# 🔥 连接单击事件
mission_panel.table.cellClicked.connect(self._onMissionRowClicked)
def _onMissionRowClicked(self, row, column):
"""任务行被点击"""
if self.mission_text_status:
self.mission_text_status.setRowBlackOnSelect(row)
```
### 4. 在启动检测时置状态列为绿色
修改 `_updateChannelColumnColor` 方法:
```python
def _updateChannelColumnColor(self):
"""根据通道检测状态更新任务面板中状态列"""
try:
# ... 收集正在执行的任务 ...
for task_folder_name in active_tasks:
# 检查该任务的所有通道是否都在检测
if all_channels_detecting:
# 🔥 使用文本状态管理器设置绿色
if self.mission_text_status:
self.mission_text_status.setStatusColumnGreenOnDetection(task_folder_name)
except Exception as e:
print(f"❌ [状态列更新] 失败: {e}")
```
### 5. 在停止检测时恢复状态列颜色
```python
def _onStopDetection(self, task_folder_name):
"""停止检测"""
# ... 停止检测线程 ...
# 🔥 恢复状态列颜色
if self.mission_text_status:
self.mission_text_status.resetStatusColumnOnStopDetection(task_folder_name)
```
### 6. 在新建任务时初始化为灰色
```python
def _handleTaskConfirmed(self, task_data):
"""处理任务确认"""
# ... 添加任务到表格 ...
row_index = self.mission_panel.table.rowCount() - 1 # 新添加的行
# 🔥 初始化新任务行为灰色
if self.mission_text_status:
self.mission_text_status.initializeNewTaskRowGray(row_index)
```
## API 参考
### initializeAllRowsGray()
初始化所有任务行文本为灰色
### setRowBlackOnSelect(row_index)
单击选中行时该行文本置为黑色
- **参数**: `row_index` - 选中的行索引
### setStatusColumnGreenOnDetection(task_folder_name)
启动检测线程时对应任务的状态列置为绿色
- **参数**: `task_folder_name` - 任务文件夹名称(如 "1_1")
### resetStatusColumnOnStopDetection(task_folder_name)
停止检测线程时恢复状态列颜色
- **参数**: `task_folder_name` - 任务文件夹名称(如 "1_1")
### initializeNewTaskRowGray(row_index)
新建任务时该行文本初始为灰色
- **参数**: `row_index` - 新建任务的行索引
## 注意事项
1. **状态列优先级**:状态列(索引2)的颜色由检测状态决定,不受选中行影响
2. **曲线按钮列**:自动跳过曲线按钮列,不修改其颜色
3. **线程安全**:所有方法都包含异常处理,确保不会因为单个操作失败而影响整体功能
4. **选中状态保持**:管理器会记住当前选中的行,切换选中时自动恢复之前行的颜色
## 示例:完整集成流程
```python
class MissionPanelHandler:
def connectMissionPanel(self, mission_panel):
self.mission_panel = mission_panel
# 1. 创建文本状态管理器
self.mission_text_status = MissionTextStatus(mission_panel)
# 2. 初始化所有行为灰色
self.mission_text_status.initializeAllRowsGray()
# 3. 连接单击事件
mission_panel.table.cellClicked.connect(self._onMissionRowClicked)
# 4. 连接其他信号...
def _onMissionRowClicked(self, row, column):
"""任务行被点击"""
if self.mission_text_status:
self.mission_text_status.setRowBlackOnSelect(row)
def _updateChannelColumnColor(self):
"""更新状态列颜色"""
# 获取正在检测的任务
for task_folder_name in detecting_tasks:
if self.mission_text_status:
self.mission_text_status.setStatusColumnGreenOnDetection(task_folder_name)
def _handleTaskConfirmed(self, task_data):
"""新建任务"""
# 添加到表格...
row_index = self.mission_panel.table.rowCount() - 1
# 初始化为灰色
if self.mission_text_status:
self.mission_text_status.initializeNewTaskRowGray(row_index)
```
...@@ -1176,16 +1176,41 @@ class GeneralSetPanelHandler: ...@@ -1176,16 +1176,41 @@ class GeneralSetPanelHandler:
self.top_points = [] # 存储顶部标记点 self.top_points = [] # 存储顶部标记点
def add_box(self, cx, cy, size): def add_box(self, cx, cy, size):
"""添加检测区域""" """
添加检测区域,并自动计算顶部点和底部点
Args:
cx: 框中心x坐标
cy: 框中心y坐标
size: 框的边长
"""
self.boxes.append((cx, cy, size)) self.boxes.append((cx, cy, size))
# 自动计算并添加底部点和顶部点
# 底部点:box底边y坐标 - box高度的10%,x为中心
half_size = size / 2
bottom_y = cy + half_size - (size * 0.1) # 底边y - 10%高度
bottom_x = cx # x位置为box轴对称中心
self.bottom_points.append((int(bottom_x), int(bottom_y)))
# 顶部点:box顶边y坐标 + box高度的10%,x为中心
top_y = cy - half_size + (size * 0.1) # 顶边y + 10%高度
top_x = cx # x位置为box轴对称中心
self.top_points.append((int(top_x), int(top_y)))
print(f"添加框: 中心({cx}, {cy}), 边长{size}")
print(f" 底部点: ({int(bottom_x)}, {int(bottom_y)})")
print(f" 顶部点: ({int(top_x)}, {int(top_y)})")
def add_bottom(self, x, y): def add_bottom(self, x, y):
"""添加底部标记点""" """添加底部标记点(保留用于兼容性,但不再使用)"""
self.bottom_points.append((x, y)) # 此方法保留但不再使用,因为底部点会在add_box时自动添加
pass
def add_top(self, x, y): def add_top(self, x, y):
"""添加顶部标记点""" """添加顶部标记点(保留用于兼容性,但不再使用)"""
self.top_points.append((x, y)) # 此方法保留但不再使用,因为顶部点会在add_box时自动添加
pass
def get_mission_results(self): def get_mission_results(self):
"""获取标注结果""" """获取标注结果"""
......
...@@ -147,7 +147,7 @@ class TestHandler: ...@@ -147,7 +147,7 @@ class TestHandler:
QtWidgets.QMessageBox.information( QtWidgets.QMessageBox.information(
None, "成功", None, "成功",
f"配置已复制到 test.yaml!\n\n" f"配置已复制到 test.yaml!\n\n"
f"已配置通道:{', '.join(channels)}\n\n" f"已启动通道:{', '.join(channels)}\n\n"
f"配置来源:\n" f"配置来源:\n"
f"- 通道连接信息:default_config.yaml\n" f"- 通道连接信息:default_config.yaml\n"
f"- 标注数据:annotation_mission_result.yaml\n\n" f"- 标注数据:annotation_mission_result.yaml\n\n"
...@@ -914,12 +914,12 @@ class TestHandler: ...@@ -914,12 +914,12 @@ class TestHandler:
if channel_id not in config: if channel_id not in config:
config[channel_id] = {} config[channel_id] = {}
# 检查是否已配置save_liquid_data_path # 检查是否已启动save_liquid_data_path
existing_path = config[channel_id].get('save_liquid_data_path', '') or \ existing_path = config[channel_id].get('save_liquid_data_path', '') or \
config[channel_id].get('general', {}).get('save_liquid_data_path', '') config[channel_id].get('general', {}).get('save_liquid_data_path', '')
if existing_path and existing_path.strip(): if existing_path and existing_path.strip():
# 已配置,无需设置 # 已启动,无需设置
return return
# 设置默认路径:recordings/{channel_id} # 设置默认路径:recordings/{channel_id}
......
...@@ -279,7 +279,7 @@ class ChannelThreadManager: ...@@ -279,7 +279,7 @@ class ChannelThreadManager:
detect_var_name = f'{channel_id}detect' detect_var_name = f'{channel_id}detect'
setattr(self.main_window, detect_var_name, True) setattr(self.main_window, detect_var_name, True)
# 🔥 更新任务面板中通道列的颜色(检测状态变化时 # 🔥 更新任务面板中状态列的颜色(只更新为绿色,不置黑
if hasattr(self.main_window, '_updateChannelColumnColor'): if hasattr(self.main_window, '_updateChannelColumnColor'):
self.main_window._updateChannelColumnColor() self.main_window._updateChannelColumnColor()
...@@ -518,7 +518,7 @@ class ChannelThreadManager: ...@@ -518,7 +518,7 @@ class ChannelThreadManager:
detect_var_name = f'{channel_id}detect' detect_var_name = f'{channel_id}detect'
setattr(self.main_window, detect_var_name, False) setattr(self.main_window, detect_var_name, False)
# 🔥 更新任务面板中通道列的颜色(检测状态变化时 # 🔥 更新任务面板中状态列的颜色(只更新为绿色,不置黑
if hasattr(self.main_window, '_updateChannelColumnColor'): if hasattr(self.main_window, '_updateChannelColumnColor'):
self.main_window._updateChannelColumnColor() self.main_window._updateChannelColumnColor()
......
1曲线模式索引0布局,只显示根据curvemission筛选使用的通道面板失效了 1曲线模式索引0布局,只显示根据curvemission筛选使用的通道面板失效了
...@@ -13,3 +13,11 @@ ...@@ -13,3 +13,11 @@
任意通道 detection_flag = True? 任意通道 detection_flag = True?
├─ 是 → 返回 True → 索引0(实时检测) ├─ 是 → 返回 True → 索引0(实时检测)
└─ 否 → 返回 False → 索引1(历史回放) └─ 否 → 返回 False → 索引1(历史回放)
保存标注结果用于持久显示
self._last_annotation_pixmap
任务面板任务信息文本状态切换逻辑 class missiontexe_status
1任务面板信息文本显示初始默认都为灰色
2单击选中行时文本该行文本置为黑色
3启动检测线程时对应任务的对应通道列置为绿色
4新建任务信息文本显示初始默认都为灰色
\ No newline at end of file
...@@ -980,6 +980,11 @@ class AnnotationWidget(QtWidgets.QWidget): ...@@ -980,6 +980,11 @@ class AnnotationWidget(QtWidgets.QWidget):
self.drawing_box = False self.drawing_box = False
self.box_start = (0, 0) self.box_start = (0, 0)
# 🔥 拖动点相关属性
self.dragging_point = False # 是否正在拖动点
self.dragging_point_type = None # 'bottom' 或 'top'
self.dragging_point_index = -1 # 正在拖动的点的索引
# 🔥 原地编辑相关属性 # 🔥 原地编辑相关属性
self.edit_widget = None # 当前编辑控件 self.edit_widget = None # 当前编辑控件
self.editing_area_index = -1 # 正在编辑的区域索引 self.editing_area_index = -1 # 正在编辑的区域索引
...@@ -1416,11 +1421,11 @@ class AnnotationWidget(QtWidgets.QWidget): ...@@ -1416,11 +1421,11 @@ class AnnotationWidget(QtWidgets.QWidget):
instructions = [ instructions = [
"标注操作指南", "标注操作指南",
"1. 左键拖动放置检测区域框", "1. 左键拖动放置检测区域框",
"2. 在框内底部区域点击设置容器底部点", "2. 拖动设置容器底部点",
"3. 在框内顶部区域点击设置容器顶部点", "3. 拖动设置容器顶部点",
"4. 双击文本编辑名称/高度,Enter确认", "4. 双击编辑名称/高度,Enter确认",
"5. 双击状态标签切换状态(默认→空→满)", "5. 双击状态标签切换状态\n(初始空满状态逻辑优化中,敬请期待)",
"6. 双击空白区域完成标注", "\n6. 双击空白区域完成标注",
"", "",
"快捷键操作(增强版)", "快捷键操作(增强版)",
"R=重置所有 C/S=完成标注 D/U=删除最后", "R=重置所有 C/S=完成标注 D/U=删除最后",
...@@ -1570,6 +1575,15 @@ class AnnotationWidget(QtWidgets.QWidget): ...@@ -1570,6 +1575,15 @@ class AnnotationWidget(QtWidgets.QWidget):
# 左键点击:正常标注流程 # 左键点击:正常标注流程
if event.button() == Qt.LeftButton: if event.button() == Qt.LeftButton:
# 🔥 首先检查是否点击了某个点(用于拖动)
point_type, point_index = self._findNearestPoint(image_x, image_y)
if point_type is not None:
# 开始拖动点
self.dragging_point = True
self.dragging_point_type = point_type
self.dragging_point_index = point_index
return
if self.annotation_engine.step == 0: # 画框模式 if self.annotation_engine.step == 0: # 画框模式
self.drawing_box = True self.drawing_box = True
self.box_start = (image_x, image_y) self.box_start = (image_x, image_y)
...@@ -1589,13 +1603,33 @@ class AnnotationWidget(QtWidgets.QWidget): ...@@ -1589,13 +1603,33 @@ class AnnotationWidget(QtWidgets.QWidget):
def _onMouseMove(self, event): def _onMouseMove(self, event):
"""鼠标移动事件""" """鼠标移动事件"""
if self.drawing_box and self.annotation_engine is not None:
image_x, image_y = self._labelToImageCoords(event.x(), event.y()) image_x, image_y = self._labelToImageCoords(event.x(), event.y())
# 🔥 如果正在拖动点,更新点的位置
if self.dragging_point and self.annotation_engine is not None:
if self.dragging_point_type == 'bottom':
if 0 <= self.dragging_point_index < len(self.annotation_engine.bottom_points):
self.annotation_engine.bottom_points[self.dragging_point_index] = (image_x, image_y)
elif self.dragging_point_type == 'top':
if 0 <= self.dragging_point_index < len(self.annotation_engine.top_points):
self.annotation_engine.top_points[self.dragging_point_index] = (image_x, image_y)
self._updateDisplay()
return
# 如果正在画框,更新鼠标位置
if self.drawing_box and self.annotation_engine is not None:
self.current_mouse_pos = (image_x, image_y) self.current_mouse_pos = (image_x, image_y)
self._updateDisplay() self._updateDisplay()
def _onMouseRelease(self, event): def _onMouseRelease(self, event):
"""鼠标释放事件""" """鼠标释放事件"""
# 🔥 如果正在拖动点,结束拖动
if self.dragging_point:
self.dragging_point = False
self.dragging_point_type = None
self.dragging_point_index = -1
return
if self.drawing_box and self.annotation_engine is not None: if self.drawing_box and self.annotation_engine is not None:
self.drawing_box = False self.drawing_box = False
image_x, image_y = self._labelToImageCoords(event.x(), event.y()) image_x, image_y = self._labelToImageCoords(event.x(), event.y())
...@@ -1612,8 +1646,13 @@ class AnnotationWidget(QtWidgets.QWidget): ...@@ -1612,8 +1646,13 @@ class AnnotationWidget(QtWidgets.QWidget):
cx = (self.box_start[0] + x2) // 2 cx = (self.box_start[0] + x2) // 2
cy = (self.box_start[1] + y2) // 2 cy = (self.box_start[1] + y2) // 2
size = length size = length
self.annotation_engine.boxes.append((cx, cy, size))
self.annotation_engine.step = 1 # 🔥 调用 add_box 方法,自动生成顶部点和底部点
self.annotation_engine.add_box(cx, cy, size)
# 🔥 保持 step = 0(画框模式),不再需要手动点击设置顶部和底部点
# self.annotation_engine.step = 1 # 旧逻辑:进入点击底部点模式
self._updateDisplay() self._updateDisplay()
def _onMouseDoubleClick(self, event): def _onMouseDoubleClick(self, event):
...@@ -1824,6 +1863,44 @@ class AnnotationWidget(QtWidgets.QWidget): ...@@ -1824,6 +1863,44 @@ class AnnotationWidget(QtWidgets.QWidget):
return image_x, image_y return image_x, image_y
def _findNearestPoint(self, x, y, threshold=15):
"""
查找距离(x, y)最近的点
Args:
x, y: 鼠标坐标
threshold: 距离阈值(像素)
Returns:
tuple: (point_type, point_index) 或 (None, -1)
point_type: 'bottom' 或 'top'
point_index: 点的索引
"""
if self.annotation_engine is None:
return None, -1
min_distance = threshold
nearest_type = None
nearest_index = -1
# 检查底部点
for i, (px, py) in enumerate(self.annotation_engine.bottom_points):
distance = ((x - px) ** 2 + (y - py) ** 2) ** 0.5
if distance < min_distance:
min_distance = distance
nearest_type = 'bottom'
nearest_index = i
# 检查顶部点
for i, (px, py) in enumerate(self.annotation_engine.top_points):
distance = ((x - px) ** 2 + (y - py) ** 2) ** 0.5
if distance < min_distance:
min_distance = distance
nearest_type = 'top'
nearest_index = i
return nearest_type, nearest_index
def _isPointInLastBox(self, x, y): def _isPointInLastBox(self, x, y):
"""检查点(x, y)是否在最后一个检测框内""" """检查点(x, y)是否在最后一个检测框内"""
if self.annotation_engine is None: if self.annotation_engine is None:
......
...@@ -1424,7 +1424,7 @@ class MissionPanel(QtWidgets.QWidget): ...@@ -1424,7 +1424,7 @@ class MissionPanel(QtWidgets.QWidget):
'task_id': task_id, 'task_id': task_id,
'task_name': task_name, 'task_name': task_name,
'selected_channels': selected_channels, 'selected_channels': selected_channels,
'status': '待配置' 'status': '未启动'
} }
# 发送任务确认信号 # 发送任务确认信号
...@@ -1581,7 +1581,7 @@ class MissionPanel(QtWidgets.QWidget): ...@@ -1581,7 +1581,7 @@ class MissionPanel(QtWidgets.QWidget):
row_data = [ row_data = [
task_info.get('task_id', ''), task_info.get('task_id', ''),
task_info.get('task_name', ''), task_info.get('task_name', ''),
task_info.get('status', '待配置'), task_info.get('status', '未启动'),
channel_data[0], # 通道1列 channel_data[0], # 通道1列
channel_data[1], # 通道2列 channel_data[1], # 通道2列
channel_data[2], # 通道3列 channel_data[2], # 通道3列
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment