将Roboflow项目导入程序遇BoxAnnotator弃用错误,求解决方案
问题分析与解决方案
1. Supervision BoxAnnotator 弃用警告
- 原因:你的代码虽未直接调用
BoxAnnotator,但inference或roboflow库内部依赖的Supervision版本已更新,旧的BoxAnnotator被标记为弃用,后续版本会彻底移除。 - 解决办法:
- 方法一:降级Supervision到0.21.x版本,暂时规避警告:
pip install supervision==0.21.0 - 方法二:更新
inference和roboflow库到最新版本,确保它们适配Supervision的新API:pip install --upgrade roboflow inference - 方法三:如果后续需要自行绘制检测框和标签,替换为新的API(示例代码):
import supervision as sv # 替代旧的BoxAnnotator box_annotator = sv.BoundingBoxAnnotator() label_annotator = sv.LabelAnnotator() # 标注示例(假设image是输入图像,results是模型推理结果) annotated_image = box_annotator.annotate(scene=image, detections=results) annotated_image = label_annotator.annotate(scene=annotated_image, detections=results)
- 方法一:降级Supervision到0.21.x版本,暂时规避警告:
2. Roboflow 认证令牌提示
- 原因:
roboflow.login()需要通过CLI完成认证流程,你当前代码中直接硬编码API密钥的方式与login()调用冲突,导致系统提示获取认证令牌。 - 解决办法:
- 方法一:移除
roboflow.login()调用,直接用API密钥初始化Roboflow对象(你的代码已包含此逻辑,保留即可):# 删除这一行:roboflow.login() rf = Roboflow(api_key="my_key") - 方法二:通过环境变量设置API密钥,更安全规范:
在终端设置环境变量(Windows用set,Linux/macOS用export):
代码中可简化为:# Linux/macOS export ROBOFLOW_API_KEY="my_key" # Windows set ROBOFLOW_API_KEY="my_key"import roboflow rf = Roboflow() # 自动读取环境变量中的API密钥
- 方法一:移除
内容的提问来源于stack exchange,提问作者Dima S
相关产品推荐
相关产品推荐

