在Python中,如果你已知图片中四个点的坐标,并且想要找到这四个点的最小外接矩形(不旋转),你可以使用OpenCV库中的cv2.boundingRect函数。这个函数会返回一个矩形,该矩形完全包含给定的点集,并且不会旋转以匹配点的方向。

以下是一个示例代码,展示了如何使用cv2.boundingRect来找到四个点的最小外接矩形,并在图片上绘制它:

import cv2
import numpy as np

# 假设这是已知的四个点的坐标(x, y)
points = np.array([(100, 100), (200, 50), (250, 200), (150, 250)], dtype=np.int32)

# 使用cv2.boundingRect找到最小外接矩形
x, y, w, h = cv2.boundingRect(points)

# 读取图片(这里假设图片足够大以包含这个矩形)
image = np.zeros((400, 400, 3), dtype=np.uint8)  # 创建一个空白图片作为示例

# 在图片上绘制矩形(颜色为红色,厚度为2)
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)

# 显示图片
cv2.imshow('Bounding Rectangle', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中:

  • points是一个NumPy数组,包含了四个点的坐标。
  • cv2.boundingRect(points)返回一个元组(x, y, w, h),其中(x, y)是矩形的左上角坐标,wh分别是矩形的宽度和高度。
  • 我们创建了一个空白图片image来作为绘制矩形的画布。在实际应用中,你应该使用你自己的图片。
  • 使用cv2.rectangle函数在图片上绘制矩形。
  • 最后,使用cv2.imshow显示图片,并在按下任意键后关闭窗口。

请注意,这个矩形不会旋转以匹配点的方向,它总是水平的。如果你需要旋转的矩形(即最小外接旋转矩形),你应该使用cv2.minAreaRectcv2.boxPoints函数。但在你的情况下,由于你不需要旋转,所以cv2.boundingRect就足够了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐