加上颜色分割和边缘检测算法
时间: 2024-12-02 12:21:37 浏览: 7
在检测像球这样的目标时,单纯依靠形状可能会误判,加上颜色分割和边缘检测可以提高精确性。以下是修改后的代码片段,加入了HSV颜色空间中的颜色选择以及Canny边缘检测:
```python
import cv2
import numpy as np
# 加载彩色图像
color_image = cv2.imread('game_scene.jpg')
# 转换到HSV颜色空间,提取红色球体(这里假设球是红色的)
lower_red = np.array([0, 50, 50]) # 设置红色的HSV下限
upper_red = np.array([10, 255, 255]) # 设置红色的HSV上限
mask = cv2.inRange(color_image, lower_red, upper_red) # 创建红色滤镜
# 对滤镜后的图像进行边缘检测
edges = cv2.Canny(mask, 50, 150)
# 寻找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 同样遍历轮廓并画出矩形框,现在基于边缘和颜色信息
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
# 检查轮廓是否接近圆形,同时考虑边缘信息
area = cv2.contourArea(contour)
if w / h < 1.2 and area > 1000: # 可调整面积阈值以排除小干扰
cv2.rectangle(color_image, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 显示原始图像和检测结果
cv2.imshow("Original", color_image)
cv2.imshow("Red Ball Detection", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文