2 Commits

Author SHA1 Message Date
Kevin Wong
fbc5cf49d8 修改缩进错误 2026-01-06 10:47:41 +08:00
Kevin Wong
b336692144 室内导盲增加数据集 2026-01-05 17:55:17 +08:00

View File

@@ -30,24 +30,27 @@ CLASS_CORRIDOR = 1
CLASS_SIDEWALK = 2
# 静态障碍物 (家具 + 杂物)
OBSTACLE_CLASSES = {3, 4, 5, 11, 12, 14, 15, 16, 17, 18, 19}
OBSTACLE_CLASSES = {3, 4, 5, 11, 12, 14, 15, 16, 17, 18}
CLASS_CHAIR = 3
CLASS_TABLE = 4
CLASS_SOFA_BED = 5
CLASS_CABINET = 11
CLASS_TRASH_CAN = 12
CLASS_CUP_BOTTLE = 14
CLASS_BAG = 15
CLASS_ELECTRONICS = 16
CLASS_PLANT = 17
CLASS_CLOCK = 18
CLASS_OBSTACLE = 19
CLASS_TRASH_CAN = 12
# CLASS_CUP_BOTTLE = 14 (Removed)
CLASS_BAG = 14
CLASS_ELECTRONICS = 15
CLASS_PLANT = 16
CLASS_OBSTACLE = 17
CLASS_APPLIANCE = 18
# 兴趣点
POI_CLASSES = {6, 7, 8} # door, elevator, stairs
POI_CLASSES = {6, 7, 8, 19, 20} # door, elevator, stairs, toilet, sink
CLASS_DOOR = 6
CLASS_ELEVATOR = 7
CLASS_STAIRS = 8
CLASS_TOILET = 19
CLASS_SINK = 20
# 边界
BOUNDARY_CLASSES = {9, 10} # wall, window
@@ -63,22 +66,31 @@ CLASS_NAMES = {
3: 'chair', 4: 'table', 5: 'sofa_bed',
6: 'door', 7: 'elevator', 8: 'stairs',
9: 'wall', 10: 'window', 11: 'cabinet',
12: 'trash_can', 13: 'person', 14: 'cup_bottle',
15: 'bag', 16: 'electronics', 17: 'plant',
18: 'clock', 19: 'obstacle'
12: 'trash_can', 13: 'person',
14: 'bag', 15: 'electronics', 16: 'plant',
17: 'obstacle', 18: 'appliance',
19: 'toilet', 20: 'sink',
21: 'tableware'
}
# 中文名称(用于语音)
CLASS_NAMES_CN = {
0: '地面', 1: '走廊', 2: '人行道',
3: '椅子', 4: '桌子', 5: '沙发',
6: '', 7: '电梯', 8: '楼梯',
9: '墙壁', 10: '窗户', 11: '柜子',
12: '垃圾桶', 13: '行人', 14: '杯子瓶子',
15: '', 16: '电子设备', 17: '绿植',
18: '时钟', 19: '障碍物'
12: '垃圾桶', 13: '行人',
14: '', 15: '电子设备', 16: '绿植',
17: '障碍物', 18: '家电',
19: '卫生间', 20: '洗手台',
21: '餐具'
}
# 物品类 (不播报,除非寻找模式)
ITEM_CLASSES = {21}
CLASS_TABLEWARE = 21
# ========== 配置参数 ==========
CONF_THRESHOLD = float(os.getenv('INDOOR_CONF_THRESHOLD', '0.25'))
WALKABLE_MIN_AREA = int(os.getenv('INDOOR_WALKABLE_MIN_AREA', '3000'))
@@ -263,6 +275,12 @@ class IndoorNavigator:
cls_id = int(cls_id.item())
conf_val = float(conf.item())
# 过滤物品类 (默认不参与导航逻辑,防止刷屏)
if cls_id in ITEM_CLASSES:
# 可以选择存入特定的 items 列表供"找东西"功能使用
# 这里暂时忽略,避免干扰避障
continue
# 调整 mask 尺寸
mask_resized = cv2.resize(mask, (w, h), interpolation=cv2.INTER_NEAREST)
mask_bin = (mask_resized > 0.5).astype(np.uint8)
@@ -430,8 +448,8 @@ class IndoorNavigator:
if cy > h * 0.5: # 比较近
return f"注意前方有{name_cn}"
# 门/电梯提示
elif cls_id in (CLASS_DOOR, CLASS_ELEVATOR):
# 门/电梯/卫生间/洗手台提示
elif cls_id in (CLASS_DOOR, CLASS_ELEVATOR, CLASS_TOILET, CLASS_SINK):
if cy > h * 0.3: # 在视野内
position = "左侧" if cx < w * 0.4 else ("右侧" if cx > w * 0.6 else "前方")
return f"{position}{name_cn}"