opencv中的找长方形
时间: 2023-10-22 14:06:24 浏览: 47
在OpenCV中,可以使用cv2.findContours()函数来找到图像中的轮廓。然后,可以使用cv2.approxPolyDP()函数对轮廓进行多边形逼近,以找到长方形的四个顶点。最后,可以使用cv2.drawContours()函数将找到的长方形绘制到图像上。
以下是一个简单的示例代码:
```python
import cv2
# 读取图像
img = cv2.imread('image.png')
# 灰度化、二值化处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for cnt in contours:
# 多边形逼近
approx = cv2.approxPolyDP(cnt, 0.01*cv2.arcLength(cnt, True), True)
# 如果是四边形,则绘制
if len(approx) == 4:
cv2.drawContours(img, [approx], 0, (0, 0, 255), 2)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码中,使用cv2.RETR_EXTERNAL表示只检测最外层轮廓,使用cv2.CHAIN_APPROX_SIMPLE表示只保留轮廓的端点。如果需要检测内部轮廓,可以使用cv2.RETR_LIST。