OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle 函数的用法

1 cv2.boundingRect

作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界。

cv2.boundingRect(array) -> retval

参数

array - 灰度图像(gray-scale image)或 2D点集( 2D point set ) 

返回值

元组(x, y, w, h ) 矩形左上点坐标,w, h 是矩阵的宽、高,例如 (161, 153, 531, 446)

代码示例:

contours, hierarchy = cv2.findContours(re_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for c in contours:
    # find bounding box coordinates
    # 现计算出一个简单的边界框
    x, y, w, h = cv2.boundingRect(c)
     # 画出矩形
    cv2.rectangle(img, (x,y), (x+w, y+h), (0, 255, 0), 2) 

2 cv2.minAreaRect

作用:minAreaRect - min Area Rect 最小区域矩形;计算指定点集的最小区域的边界矩形,矩形可能会发生旋转 possibly rotated,以保证区域面积最小。

cv2.minAreaRect(points) -> retval

参数:

points - 2D点的矢量( vector of 2D points )

返回值:

 元组((最小外接矩形的中心坐标),(宽,高),旋转角度)----->    ((x, y), (w, h), θ )

如 ((458.70343017578125, 381.97894287109375), (202.513916015625, 634.2526245117188), -45.707313537597656)

但绘制这个矩形,一般需要知道矩形的 4 个顶点坐标;通常是通过函数 cv2.boxPoints()获取。

附 : cv2.boxPoints

作用:查找旋转矩形的 4 个顶点(用于绘制旋转矩形的辅助函数)。

cv2.boxPoints(box) -> points

参数:

box - 旋转的矩形

返回值:

points - 矩形 4 个顶点组成的数组

返回值示例:

[[614.9866  675.9137 ]
 [161.      232.99997]
 [302.4203   88.04419]
 [756.40686 530.9579 ]]

代码示例:

contours, hierarchy = cv2.findContours(re_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for c in contours:
    # find minimum area
    # 计算包围目标的最小矩形区域
    rect = cv2.minAreaRect(c)

    # calculate coordinate of the minimum area rectangle
    box = cv2.boxPoints(rect)
    # normalize coordinates to integers
    box =np.int0(box)
    # 注:OpenCV没有函数能直接从轮廓信息中计算出最小矩形顶点的坐标。所以需要计算出最小矩形区域,
    # 然后计算这个矩形的顶点。由于计算出来的顶点坐标是浮点型,但是所得像素的坐标值是整数(不能获取像素的一部分),
    # 所以需要做一个转换
    # draw contours
    cv2.drawContours(img, [box], 0, (0, 0, 255), 3)  # 画出该矩形

但是要绘制这个矩形,我们需要矩形的4个顶点坐标box, 通过函数 cv2.cv.BoxPoints() 获得,box:[ [x0,y0], [x1,y1], [x2,y2], [x3,y3] ]

最小外接矩形的4个顶点顺序、中心坐标、宽度、高度、旋转角度(是度数形式,不是弧度数)的对应关系如下:

注:当数据

该函数计算并返回指定点集的最小区域边界矩形(可能旋转)。 开发人员应该记住,当数据接近包含的Mat元素边界时,返回的RotatedRect可以包含负索引。
    。

猜你喜欢

转载自www.cnblogs.com/gengyi/p/10317664.html