opencv 矩形检测 python
时间: 2025-01-14 14:52:44 浏览: 42
### 使用 OpenCV 和 Python 进行矩形检测
为了实现矩形检测,可以采用形态学操作来增强图像特征并识别轮廓。具体过程涉及灰度转换、二值化处理以及寻找和筛选特定形状的轮廓。
#### 图像预处理
首先加载目标图片,并将其转化为灰度图以便后续处理[^1]:
```python
import cv2
import numpy as np
image = cv2.imread('path_to_image')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
```
#### 形态学变换与边缘提取
应用高斯模糊减少噪声干扰,再通过Canny算法获取边界信息:
```python
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(blurred, 75, 200)
```
#### 查找轮廓
利用`findContours()`函数找到所有可能的对象轮廓,并仅保留外部轮廓用于进一步分析:
```python
contours, _ = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 对于每个轮廓计算其面积大小并与设定阈值比较
rectangles = []
for c in contours:
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.02 * peri, True)
# 如果近似多边形有四个顶点,则认为是一个矩形
if len(approx) == 4 and cv2.isContourConvex(approx):
rectangles.append(approx)
```
#### 绘制矩形框
对于每一个被确认为矩形的轮廓,在原图上绘制绿色实线框表示出来:
```python
for rect in rectangles:
x, y, w, h = cv2.boundingRect(rect)
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow("Detected Rectangles", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码片段展示了完整的流程,从读取输入文件到最终显示带有标记的结果图像[^2]。
阅读全文
相关推荐


















