GearsBot的find_blobs()函数用法及黄色块检测失败问题咨询
问题:GearsBot摄像头黄色块检测find_blobs调用无结果
我正在用Python结合GearsBot开发基于摄像头的黄色块检测功能。通过代码得到黄色的HSV范围:
Lower HSV: (50.30769230769232, 42.647058823529406%, 26.27450980392157%)
Upper HSV: (67.27272727272728, 77.77777777777779%, 89.41176470588236%)
随后调用find_blobs()函数检测黄色块:
# 检测色块 blobs = camera_sensor_in6.find_blobs((52, 67, 42, 77, 26, 89), 10) print(f"检测到的色块数量: {len(blobs)}")
但检测结果始终为0,调整参数也没用。想知道find_blobs()的参数规范是什么?我是不是调用错了?
解答
1. find_blobs的参数规范
GearsBot的find_blobs函数中,HSV阈值参数需遵循**(H_min, H_max, S_min, S_max, V_min, V_max)**的顺序,且各通道取值范围有明确要求:
- H(色相):0-180
- S(饱和度)、V(明度):0-255(而非百分比)
2. 你的调用错误点
你传入的S、V值是直接取整后的百分比数值,但实际需要将百分比转换为0-255的整数:
- S_min: 42.647% → 42.647/100*255 ≈ 109
- S_max:77.777% → 77.777/100*255≈200
- V_min:26.274% →26.274/100*255≈67
- V_max:89.411% →89.411/100*255≈228
另外你将H的上下限取整为52、67,虽接近计算值,但建议保留原范围的下限(50)以覆盖完整的黄色色相区间。
3. 修正后的代码示例
# 转换后的HSV范围(匹配实际参数要求) blobs = camera_sensor_in6.find_blobs((50, 67, 109, 200, 67, 228), 10) print(f"检测到的色块数量: {len(blobs)}")
额外调试建议
- 若仍无检测结果,可适当扩大阈值范围,比如H设为45-70、S设为80-220、V设为50-240,逐步缩小找到最优值
- 确认摄像头画面中黄色块清晰无遮挡,且镜头对焦正常
内容的提问来源于stack exchange,提问作者Fatimah Altuhaifa
相关产品推荐
相关产品推荐

