图像轮廓之轮廓拟合

2021-11-08  本文已影响0人  大龙10

《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05

第12章 图像轮廓

12.4 轮廓拟合

  在计算轮廓时,可能并不需要实际的轮廓,而仅需要一个接近于轮廓的近似多边形。OpenCV提供了多种计算轮廓近似多边形的方法。

1)矩形包围框

  函数cv2.boundingRect()能够绘制轮廓的矩形边界。该函数的语法格式为:

retval=cv2.boundingRect(array)

式中:

x,y,w,h=cv2.boundingRect(array)

这里的4个返回值分别表示:

2)最小包围矩形框

函数cv2.minAreaRect()能够绘制轮廓的最小包围矩形框,其语法格式为:

retval=cv2.minAreaRect(array)

式中:

3)最小包围圆形

函数cv2.minEnclosingCircle()通过迭代算法构造一个对象的面积最小包围圆形。该函数的语法格式为:

center,radius=cv2.minEnclosingCircle(points)

式中:

4)最优拟合椭圆

在OpenCV中,函数cv2.fitEllipse()可以用来构造最优拟合椭圆。该函数的语法格式是:

retval=cv2.fitEllipse(points)

式中:

5)最优拟合直线

在OpenCV中,函数cv2.fitLine()用来构造最优拟合直线,该函数的语法格式为:

line=cv2.fitLine(points,distType,param,reps,aeps)

式中line为返回值,是返回的最优拟合直线参数。
式中的参数如下:

6) 最小外包三角形

在OpenCV中,函数cv2.minEnclosingTriangle()用来构造最小外包三角形。该函数的语法格式为:

retval,triangle=cv2.minEnclosingTriangle(points)

式中有两个返回值:

7)逼近多边形

函数cv2.approxPolyDP()用来构造指定精度的逼近多边形曲线。该函数的语法格式为:

approxCurve=cv2.approxPolyDP(curve,epsilon,closed)

式中,返回值approxCurve为逼近多边形的点集。
式中的参数如下:

8)示例

【例12.16】使用函数cv2.fitEllipse()构造最优拟合椭圆。

import cv2
o = cv2.imread('cc.bmp')  
gray = cv2.cvtColor(o,cv2.COLOR_BGR2GRAY)  
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)  
contours, hierarchy = cv2.findContours(binary,
                                             cv2.RETR_LIST,
                                             cv2.CHAIN_APPROX_SIMPLE)  
cv2.imshow("original",o)
ellipse = cv2.fitEllipse(contours[0])
print("ellipse=",ellipse)
cv2.ellipse(o,ellipse,(0,255,0),3)
cv2.imshow("result",o)
cv2.waitKey()
cv2.destroyAllWindows()
上一篇下一篇

猜你喜欢

热点阅读