如何使用Python+OpenCV查找红灰边界黑点位置并判断边界朝向角度
OpenCV对应功能清单
1. 颜色区域分割相关功能
- 颜色空间转换:
cv2.cvtColor(),建议将默认BGR格式转为HSV格式,降低光照对颜色识别的干扰 - 颜色阈值筛选:
cv2.inRange(),分别配置红色、灰色的HSV阈值范围,生成两类区域的二值掩码
2. 边界提取相关功能
- 轮廓查找:
cv2.findContours(),分别提取红色、灰色区域的轮廓,两类区域的公共轮廓即为目标边界 - 位运算:
cv2.bitwise_and(),用于后续过滤非边界区域的黑点
3. 黑点检测相关功能
- 二值化处理:
cv2.threshold(),设置阈值提取图像中的黑色像素点 - 特征点筛选:如果黑点有固定形态,也可使用
cv2.goodFeaturesToTrack()做角点检测,或直接遍历边界区域像素判断像素值即可
4. 边界角度判断相关功能
- 梯度计算:
cv2.Sobel()/cv2.Scharr()计算边界点的x、y方向梯度,配合cv2.phase()直接输出梯度角度,角度接近0°/180°为水平边界,接近90°/270°为垂直边界 - 直线拟合:
cv2.fitLine(),取目标点附近的一小段边界像素拟合直线,通过直线方向向量计算边界角度
核心实现逻辑
- 用
cv2.imread()加载目标图像 - 转换图像到HSV空间,调用
cv2.inRange()分别得到红色、灰色区域的二值掩码 - 调用
cv2.findContours()提取两类区域的轮廓,取重叠部分生成目标边界掩码 - 二值化原图提取所有黑色像素,和边界掩码做位与运算,过滤掉灰色区域内部的黑点,得到边界上的目标黑点坐标
- 对每个黑点位置,调用梯度计算或直线拟合接口得到对应边界的角度
内容的提问来源于stack exchange,提问作者simone
相关产品推荐
相关产品推荐

