【跑实验01】TypeError: ‘function‘ object is not subscriptable

约定不等于承诺〃 2023-10-12 16:00 172阅读 0赞

在运行实验的过程中,遇到了一个问题:

  1. Traceback (most recent call last):
  2. File "get_cropped_val_images.py", line 86, in <module>
  3. gt_bboxes = get_gt_bboxes[str(image_names[i].replace('jpg', 'xml'))]
  4. TypeError: 'function' object is not subscriptable

在这里插入图片描述

根据错误信息,您正在尝试对函数get_gt_bboxes进行索引操作[str(image_names[i].replace(‘jpg’, ‘xml’))],这是不允许的,因为函数是不可索引的对象。

报错的代码片段为:

  1. image_names = []
  2. for name in os.listdir('val/'):
  3. image_names.append(name)
  4. gt_all_bboxes = get_gt_bboxes()
  5. output_folder = 'output/'
  6. interval = 100
  7. for i in range(len(image_names)):
  8. image_path = os.path.join('val/', image_names[i])
  9. image = cv2.imread(image_path)
  10. image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  11. masks = mask_generator.generate(image)
  12. bbox_list = extract_bboxes(masks)
  13. gt_bboxes = get_gt_bboxes[str(image_names[i].replace('jpg', 'xml'))]

根据错误信息,您正在尝试对函数get_gt_bboxes进行索引操作[str(image_names[i].replace(‘jpg’, ‘xml’))],这是不允许的,因为函数是不可索引的对象。

可能的原因是您意图调用get_gt_bboxes函数并将其结果存储在gt_all_bboxes中,但是在代码中我们看不到get_gt_bboxes函数的定义或相关实现。

请确保在代码中包含了正确的get_gt_bboxes函数的定义,并将其结果存储在gt_all_bboxes中,然后在后续代码中使用gt_all_bboxes来获取边界框。

把代码改进后:

  1. image_names = []
  2. for name in os.listdir('val/'):
  3. image_names.append(name)
  4. gt_all_bboxes = get_gt_bboxes()
  5. output_folder = 'output/'
  6. interval = 100
  7. for i in range(len(image_names)):
  8. image_path = os.path.join('val/', image_names[i])
  9. image = cv2.imread(image_path)
  10. image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  11. masks = mask_generator.generate(image)
  12. bbox_list = extract_bboxes(masks)
  13. gt_bboxes = gt_all_bboxes[str(image_names[i].replace('jpg', 'xml'))]
  14. selected_bboxes = []
  15. for bbox_gt in gt_bboxes:
  16. for bbox_pred in bbox_list:
  17. if is_bbox_inside(bbox_gt, bbox_pred):
  18. selected_bboxes.append(bbox_pred)
  19. break

在这里插入图片描述

可以运行结果!

发表评论

表情:
评论列表 (有 0 条评论,172人围观)

还没有评论,来说两句吧...

相关阅读