二值化图像中通过是否接近圆形来过滤python代码
时间: 2024-03-02 11:21:51 浏览: 103
以下是使用OpenCV库的Python代码来过滤二值化图像中是否接近圆形的方法:
```python
import cv2
# 读取二值化图像
img = cv2.imread('binary_image.png', cv2.IMREAD_GRAYSCALE)
# 使用霍夫圆变换检测圆形
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
# 如果没有检测到圆形,返回错误信息
if circles is None:
print("No circles were detected.")
else:
# 遍历所有检测到的圆形
for i in circles[0]:
# 计算圆形的圆度,即宽高比是否接近1
circularity = 4 * 3.14 * i[2] / (i[1] ** 2)
# 如果圆度接近1,则判定为圆形
if circularity >= 0.8 and circularity <= 1.2:
# 在原图上标记出圆形位置
cv2.circle(img, (i[0], i[1]), i[2], (0, 255, 0), 2)
# 显示处理后的图像
cv2.imshow('Detected Circles', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们使用了OpenCV库的`HoughCircles`函数来检测图像中的圆形。然后,对于每个检测到的圆形,我们计算了它的圆度,并使用一个阈值来判断它是否接近圆形。最后,在原图上标记出圆形的位置并显示出来。
阅读全文