求图像外轮廓的最小外接矩形的长和宽opencv python代码
时间: 2024-10-09 20:14:33 浏览: 60
精确覆盖-python opencv minarearect 生成最小外接矩形的方法
在OpenCV中,如果你需要求解图像中某个轮廓的最小外接矩形的长和宽,可以按照下面的步骤操作:
```python
import cv2
import numpy as np
# 假设你已经有一张图片并使用Canny算子或者其他的边缘检测方法获取到轮廓
image = ... # 你的图像数据
edges = ... # 边缘检测后的图像,例如从Canny得到
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
# 对于每一个轮廓
rect = cv2.minAreaRect(contour) # 计算最小外接矩形
box = cv2.boxPoints(rect) # 转换为边界点列表
# 将边界点转换为整数坐标,因为`minAreaRect`返回的是浮点型
box = np.int0(box)
# 取矩形的宽度和高度
width, height = rect[1]
# 打印或者在图像上标记矩形
print(f"Width: {width}, Height: {height}")
cv2.drawContours(image, [box], 0, (0, 255, 0), 2) # 绘制矩形
# 显示原始图像
cv2.imshow("Minimum Bounding Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码会遍历图像的所有轮廓,计算每个轮廓的最小外接矩形,并打印出其宽度和高度。注意,`minAreaRect`返回的是一个包含中心点(x, y),宽(w), 高(h)以及旋转角度的元组。
阅读全文