opencv 最小外接正矩形
时间: 2023-07-07 13:31:13 浏览: 112
OpenCV 中的 `minAreaRect()` 函数可以用来计算轮廓的最小外接矩形,该矩形是能够完全包围轮廓的最小矩形。如果矩形的长宽比接近于 1,则可以认为该矩形是正矩形。
下面是一个示例代码,演示了如何使用 `minAreaRect()` 函数来计算轮廓的最小外接矩形:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 计算轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
# 计算最小外接矩形
rect = cv2.minAreaRect(contours[0])
box = cv2.boxPoints(rect)
box = np.int0(box)
# 绘制矩形
cv2.drawContours(img, [box], 0, (0, 0, 255), 2)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先读取了一张图像,并将其转换为灰度图像,然后进行二值化处理。接下来,我们使用 `findContours()` 函数计算图像中的轮廓,并使用 `drawContours()` 函数将轮廓绘制到图像上。最后,我们使用 `minAreaRect()` 函数计算轮廓的最小外接矩形,并使用 `boxPoints()` 函数将矩形的四个顶点计算出来,最后使用 `drawContours()` 函数将矩形绘制到图像上。
阅读全文