opencv Python识别图像中有哪些形状后统计不同形状的个数的代码
时间: 2024-10-10 21:13:44 浏览: 112
在OpenCV中,你可以使用`cv2.findContours()`函数以及形状识别的Harris角点检测、轮廓匹配等技术来识别图像中的形状,并统计每个形状的数量。以下是一个简单的示例代码,用于统计图像中不同形状(这里假设我们只关注矩形和圆形)的个数:
```python
import cv2
import numpy as np
# 加载图片
image = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE)
# 二值化处理
_, image = cv2.threshold(image, 100, 255, cv2.THRESH_BINARY_INV)
# 寻找轮廓
contours, _ = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
shapes_count = {
'rectangle': 0,
'circle': 0
}
# 遍历轮廓,检查是否为矩形或圆形
for contour in contours:
# 矩形检测:计算边界框并判断面积
rect = cv2.boundingRect(contour)
if rect[2] * rect[3] > 50: # 可调整阈值以过滤较小的区域
shapes_count['rectangle'] += 1
# 圆形检测:尝试通过霍夫圆检测
circles = cv2.HoughCircles(image, cv2.HOUGH_GRADIENT, dp=1, minDist=20, param1=50, param2=30, minRadius=0, maxRadius=0)
if circles is not None:
circles = np.round(circles[0, :]).astype("int")
for circle in circles:
if circle[2] > 0 and circle[2] < 15: # 预设范围,可以根据实际需求调整
shapes_count['circle'] += 1
print("Rectangle count:", shapes_count['rectangle'])
print("Circle count:", shapes_count['circle'])
阅读全文