opencv 筛选矩形轮廓
时间: 2024-08-13 11:03:17 浏览: 103
opencv c++轮廓筛选
OpenCV 提供了一个名为 `cv2.findContours()` 的函数来检测图像中的轮廓,包括矩形。下面是一个简单的示例,展示了如何筛选出矩形轮廓:
```python
import cv2
import numpy as np
# 加载图像
image = cv2.imread('your_image.jpg')
# 转为灰度图像以便于轮廓检测
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化(这里假设阈值已经确定好)
_, binary = cv2.threshold(gray, threshold, 255, cv2.THRESH_BINARY)
# 寻找轮廓
contours, _ = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
# 初始化矩形轮廓列表
rect_contours = []
# 检查每个轮廓是否接近矩形
for contour in contours:
peri = cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, 0.04 * peri, True) # 使用ε比例缩放近似多边形
# 如果近似点数等于四(通常矩形有四个顶点),则可能是矩形
if len(approx) == 4:
rect_contours.append(contour)
# 可视化找到的矩形轮廓
for cnt in rect_contours:
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2) # 绘制绿色矩形框
cv2.imshow('Rectangular Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先通过`cv2.findContours()`获取轮廓,然后对每个轮廓应用`cv2.approxPolyDP()`来近似其边界。如果近似后的点数是4,则认为它是矩形。最后,我们使用`cv2.boundingRect()`来获取每个矩形的边界信息并绘制出来。
阅读全文