基于Python-OpenCV实现蓝色物体检测并打印中心坐标
时间: 2023-09-07 22:17:27 浏览: 108
可以的,以下是Python-OpenCV实现蓝色物体检测并打印中心坐标的代码:
```python
import cv2
# 读取图片
img = cv2.imread('test.jpg')
# 转换颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 设定蓝色阈值
lower_blue = np.array([110, 50, 50])
upper_blue = np.array([130, 255, 255])
# 根据阈值构建掩模
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# 对原图和掩模进行位运算
res = cv2.bitwise_and(img, img, mask=mask)
# 转换为灰度图
gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
# 二值化
ret,thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓并计算中心坐标
for cnt in contours:
# 计算轮廓面积
area = cv2.contourArea(cnt)
if area > 500:
# 绘制轮廓线条
cv2.drawContours(img,[cnt],-1,(0,255,0),2)
# 计算轮廓中心坐标
M = cv2.moments(cnt)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
# 在中心点位置绘制圆圈
cv2.circle(img, (cx, cy), 10, (255, 0, 0), -1)
# 打印中心坐标
print("Center coordinate:", cx, cy)
# 显示结果
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,我们首先读入一张图片,并将其转换为HSV颜色空间。然后,我们设定蓝色的阈值,在HSV颜色空间下构建掩模,并对原图和掩模进行位运算,得到蓝色物体的部分。接下来,我们将结果转换为灰度图,并对其进行二值化,以便于查找轮廓。通过查找轮廓并计算轮廓中心坐标,我们可以得到蓝色物体的中心坐标,并将其打印出来。最后,我们在原图中绘制轮廓线条和中心点位置,并将结果显示出来。
阅读全文