基于Python-OpenCV实现蓝色物体检测并打印中心坐标
时间: 2024-04-17 07:06:32 浏览: 26
可以的,以下是代码实现:
```python
import cv2
# 定义蓝色HSV颜色范围
lower_blue = (100, 50, 50)
upper_blue = (130, 255, 255)
# 读取图片
img = cv2.imread("test.jpg")
# 转化为HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 根据颜色范围创建掩码
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# 对掩码进行形态学处理
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
# 查找轮廓
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for cnt in contours:
# 计算轮廓中心坐标
M = cv2.moments(cnt)
cx = int(M['m10'] / M['m00'])
cy = int(M['m01'] / M['m00'])
# 在图片上绘制中心坐标
cv2.circle(img, (cx, cy), 5, (0, 0, 255), -1)
# 显示结果
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在代码中,首先定义了蓝色的 HSV 颜色范围,然后读取了一张图片并将其转化为 HSV 颜色空间。接着,根据颜色范围创建掩码,并进行形态学处理,以去除小的噪点。然后使用 `findContours` 函数查找轮廓,并遍历每个轮廓计算中心坐标,并在图片上绘制出来。最后,显示结果图片即可。
阅读全文