计算多边形的最小包围矩形

在opencv中可以根据多边形的顶点计算一个最小包围矩形。这个矩形可以是任意位置和方向的,不拘泥与必须是长宽都要水平和竖直。

请看下图:

其中蓝色的矩形和红色的矩形都是中间那块像素块的包围矩形,显然红色的矩形面积更小。有时候我们就需要找到一个像素块的最小包围矩形来进行测量,对齐或者其他的一些应用。opencv中提供了minAreaRect函数来处理此问题。

函数原型

以下是python版本的函数原型:
(center(x, y), (width, height), angle of rotation) = cv2.minAreaRect(points)

从这里可以看出,minAreaRect函数接收的是一串像素点坐标,然后再给出一个矩形的参数。这里的points一般指的是一个像素块的包围多边形,而不是该像素块所有像素点的集合。一般此函数会和cv2.findContours函数配合使用。在检测出矩形后,如果我们想把该矩形的四个点坐标都提取出来,可以采取如下方案:

rect = cv2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
box = np.int0(box)

发表评论

邮箱地址不会被公开。 必填项已用*标注