OpenCV中的四边形运算(一)——最小外接矩形

四边形的最小外接矩形

可以利用OpenCV中的minAreaRect函数获取任意多边形(或者任意点集)的最小外接矩形。

np.random.seed(70)
pts = np.random.randint(0,100,(4,2))
clock_points = order_points(pts)
rect = cv2.minAreaRect(clock_points)
# 将((cx,cy),(w,h),angle)格式表示的多边形数据转成点集表示
rect_pts = cv2.boxPoints(rect).astype(np.int32)
img = np.ones((100,100,3)).astype(np.uint8) * 255
cv2.polylines(img,[clock_points],True,(255,0,0),2)
cv2.polylines(img,[rect_pts],True,(0,0,255),1)
plt.imshow(img)

得到如下图形:

外接矩形

关于两个函数的规则如下,下面是笔者总结,并未找到官网文档中的详细解释,如有错误,望读者告知。

minAreaRect()规则

  1. 格式为((cx,cy),(w,h),angle)
  2. angle旋转角度在[-90,0]范围内,即为将矩形顺时针旋转到水平位置所需的最小角度;
  3. wh为旋转到水平位置之后的宽(水平方向)和高(竖直方向)。

boxPoints()规则

  1. 点排列为顺时针顺序,第一个点即为矩形旋转angle的基准点;
  2. angle为顺时针旋转角度,即第一点和第四点连成的线段与x轴正方向之间的夹角的相反数。

你可能感兴趣的:(OpenCV中的四边形运算(一)——最小外接矩形)