opencv识别方块并获取中心的程序
时间: 2024-06-11 15:04:22 浏览: 12
以下是一个基本的OpenCV程序,它可以检测方块并获取它们的中心点。
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('blocks.jpg')
# 将图像转换为灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 应用高斯模糊
blur = cv2.GaussianBlur(gray, (5, 5), 0)
# 应用Canny边缘检测
edges = cv2.Canny(blur, 50, 150)
# 在边缘图像上查找轮廓
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓并绘制矩形
for cnt in contours:
# 计算轮廓的周长
perimeter = cv2.arcLength(cnt, True)
# 近似轮廓为多边形
approx = cv2.approxPolyDP(cnt, 0.02 * perimeter, True)
# 如果多边形有4个顶点,则认为它是一个方块
if len(approx) == 4:
# 绘制矩形
cv2.drawContours(img, [approx], 0, (0, 255, 0), 2)
# 计算中心点
M = cv2.moments(approx)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
# 绘制中心点
cv2.circle(img, (cx, cy), 5, (0, 0, 255), -1)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个程序中,我们首先读取一张包含方块的图像。然后,我们将图像转换为灰度,并对其应用高斯模糊和Canny边缘检测。接下来,我们在边缘图像上查找轮廓,并遍历每个轮廓。对于每个轮廓,我们计算它的周长并将其近似为多边形。如果多边形有4个顶点,则我们认为它是一个方块。然后,我们绘制矩形并计算中心点。最后,我们在图像上绘制中心点并显示结果。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)