识别颜色物块
本案例使用eye-to-hand的模式,使用摄像头,Python+OpenCV相结合,通过OpenCV进行颜色定位,并将符合情况的颜色物块框出,通过相关点位计算出物块相对于机械臂的空间坐标位置。为机械臂设置一套相关动作,根据识别的物块颜色不同放置不同的区域中。
支持末端执行器: myCobot Pro 独头吸泵、myCobot Pro 自适应夹爪、myGripper F100力控夹爪
1 摄像头调整
首先,需要使用python运行aikit_V2包下的OpenVideo.py。若开启的摄像头为电脑摄像头则需要修改cap_num,具体可参考:注意事项。确保摄像头完全包含整个识别区域,且识别区域在视频中是正正方方的,如下图所示。若识别区域在视频中不符合要求,则需要调整摄像头的位置。
M5版本:
- 打开一个控制台终端(快捷键Win+R,输入cmd进入终端),先切换到aikit_V2所在文件夹路径,再进入目标文件夹
cd Desktop/aikit_V2/AiKit_320M5/
- 输入以下命令,打开摄像头进行调整
python scripts/OpenVideo.py
树莓派版本:
- 打开一个控制台终端(快捷键Ctrl+Alt+T),进入目标文件夹
cd ~/aikit_V2/AiKit_320PI/
- 输入以下命令,打开摄像头进行调整
python scripts/OpenVideo.py
2 HSV色值调整
2.1 为什么需要调整 HSV 色值范围?
适应不同光线条件:
- 不同的环境光会影响颜色检测的结果:阳光、室内灯光、阴影下的物体可能会导致颜色在 HSV 空间中的表现变化。
- 调整 S (饱和度) 和 V (亮度) 的上下限,可以提高算法在不同光线下的适应性。
应对颜色干扰:
- 在真实场景中,背景可能包含类似颜色的区域。
- 通过调整 H (色相) 的范围,可以更精确地过滤目标颜色,减少误识别。
物体材质的影响:
- 不同材质(如反光表面、哑光表面)会导致颜色在图像中的表现不同。
- 调整 HSV 值范围,可以适应不同材质的物体。
2.2 具体HSV调整策略
调整色相 (H):
- 确定目标颜色的范围:
- 红色:H = 0~8 和 170~180。
- 蓝色:H = 78~110。
- 绿色:H = 35~85。
- 根据实际情况微调上下限,确保能够捕获目标颜色。
- 确定目标颜色的范围:
调整饱和度 (S):
- 饱和度表示颜色的纯度:
- 高纯度:颜色鲜艳。
- 低纯度:颜色接近灰色或白色。
- 根据环境光强调整下限:
- 阳光下:S > 100。
- 室内灯光:S > 50。
- 饱和度表示颜色的纯度:
调整亮度 (V):
亮度表示颜色的明暗:
- 高亮度:颜色明亮。
- 低亮度:颜色较暗。
调整下限和上限以适应阴影或反光区域:
- 阴影中:降低 V 的下限。
- 高亮区域:降低 V 的上限,防止检测反光区域。
2.3 调整示例
注意:这里以调整红色木块为例,若想调整其他颜色,可参考示例脚本代码进行修改。
M5版本:
- 打开一个控制台终端(快捷键Win+R,输入cmd进入终端),先切换到aikit_V2所在文件夹路径,再进入目标文件夹
cd Desktop/aikit_V2/AiKit_320M5/
- 再输入以下命令,启动HSV颜色检测程序。
python scripts/hsv_color_test.py
树莓派版本:
- 打开一个控制台终端(快捷键Ctrl+Alt+T),输入以下命令进入目标文件夹:
cd ~/aikit_V2/AiKit_320PI
- 再输入以下命令,启动HSV颜色检测程序。
python scripts/hsv_color_test.py
将红色木块放到摄像头识别区域,您将看到三个画面窗口:
其中:
- 窗口1 展示摄像头捕获的原始图像(未经处理)。
- 窗口2 展示颜色掩模(Mask)。白色区域表示检测到的目标颜色,黑色区域表示过滤掉的非目标颜色,可以用于验证 HSV 参数是否设置正确。如果掩模中目标物体没有被识别或检测区域不完整,说明需要调整 HSV 色值范围。
- 窗口3 展示经过颜色掩模过滤后的图像。用于观察目标颜色区域是否被正确提取。
3 案例重现-吸泵款
M5版本:
- 打开一个控制台终端(快捷键Win+R,输入cmd进入终端),先切换到aikit_V2所在文件夹路径,再进入目标文件夹
cd Desktop/aikit_V2/AiKit_320M5/
- 再输入以下命令,启动颜色识别程序。
python scripts/aikit_color.py
树莓派版本:
- 打开一个控制台终端(快捷键Ctrl+Alt+T),输入以下命令进入目标文件夹:
cd ~/aikit_V2/AiKit_320PI
- 再输入以下命令,启动颜色识别程序。
python scripts/aikit_color.py
- 当命令终端出现ok并且摄像头窗口能正常开启时,说明程序运行成功,此时可将可识别的物体放置识别区域进行识别抓取。
4 案例重现-夹爪款
M5版本:
- 打开一个控制台终端(快捷键Win+R,输入cmd进入终端),先切换到aikit_V2所在文件夹路径,再进入目标文件夹
cd Desktop/aikit_V2/AiKit_320M5/
- 末端装配 Pro自适应夹爪,可运行:
python scripts/aikit_gripper_color.py
- 末端装配 myGripper F100力控夹爪,可运行:
python scripts/aikit_force_gripper_color.py
树莓派版本:
- 打开一个控制台终端(快捷键Ctrl+Alt+T),输入以下命令进入目标文件夹:
cd ~/aikit_V2/AiKit_320PI
- 末端装配 Pro自适应夹爪,可运行:
python scripts/aikit_gripper_color.py
- 末端装配 myGripper F100力控夹爪,可运行:
python scripts/aikit_force_gripper_color.py
- 当命令终端出现ok并且摄像头窗口能正常开启时,说明程序运行成功,此时可将可识别的物体放置识别区域进行识别抓取。
夹爪款效果演示(与吸泵款类似,只是末端执行器不同):
注意事项
- 当摄像头没有正确自动框出识别区域,需要关闭程序,调整摄像头的位置,可将摄像头向左向右移动等操作。
- 若命令终端没有出现ok,且无法识别颜色时,需要将摄像头稍微向后或向前移动一下,当命令终端出现ok时程序即可正常运行。
- OpenCV图像识别会受环境的影响,若处在较为昏暗的环境下识别效果将大大降低。