如何在给定脚本中读取并处理predict[]中的多张图像?
处理predict列表中多张图像的方法
你当前的代码只处理了predict列表的第一个元素(predict[0]),所以只能显示单张图像。要批量处理所有图像,只需要遍历predict列表即可,以下是两种常见场景的实现:
场景1:每张预测结果仅处理第一个mask
如果每张图像的预测结果中你只需要第一个mask,直接遍历predict列表逐个处理:
# 遍历所有预测结果 for pred in predict: # 提取第一个mask并转换为可显示的格式 mask = (pred.masks.masks[0].numpy() * 255).astype("uint8") # 显示mask图像 cv2_imshow(mask)
场景2:每张预测结果处理所有mask
如果每张图像的预测结果包含多个mask,需要嵌套遍历每个mask:
# 遍历所有预测结果,同时记录图像索引 for img_idx, pred in enumerate(predict): # 遍历当前图像的所有mask,记录mask索引 for mask_idx, mask_data in enumerate(pred.masks.masks): # 转换mask格式 mask_img = (mask_data.numpy() * 255).astype("uint8") # 打印标识方便区分(可选) print(f"第{img_idx+1}张图像 - 第{mask_idx+1}个mask") # 显示mask cv2_imshow(mask_img)
如果需要保存mask而不是仅显示,将cv2_imshow替换为cv2.imwrite即可,示例:
cv2.imwrite(f"mask_img_{img_idx+1}_{mask_idx+1}.png", mask_img)
内容的提问来源于stack exchange,提问作者Mulugeta Shitie
相关产品推荐
相关产品推荐

