使用OpenCV进行图像处理和分析时,往往会有需要曲线拟合和圆拟合的场景,但很多OpenCV开发者却无所适从。其实OpenCV有现成的函数实现圆拟合和直线拟合,会告诉你拟合圆的半径,简直超级方便。另一个常用的场景是曲线拟合,通常是基于多项式拟合。可以根据设定的多项式幂生成多项式方程,然后根据方程生成一系列点,形成完整的曲线,在车道线检测、等高线曲线拟合等场景中特别有用。这里有两个简单的例子来学习曲线拟合和圆拟合的应用。

1.曲线拟合及应用

基于Numpy包的polyfit函数的实现支持三个参数:x点集、y点集和多项式幂。多项式方程得到后,曲线就可以完全拟合了。图表中有以下四点:

调用polyfit生成的二阶多项式如下:

拟合结果如下:

使用三阶多项式拟合,调用polyfit生成的多项式方程如下:

生成的拟合曲线如下:

使用polyfit进行曲线拟合时,需要注意的是,多项式的最大幂是N-1次多项式的数据点个数,比如有4个点,就可以达到三阶多项式拟合的最大生成。上述演示的完整代码实现如下:

def circle_fitness_demo:# 创建图像, 绘制初始点image = np.zeros, dtype=np.uint8)x = np.arrayy = np.arrayfor i in range):cv.circle, 3, , -1, 8, 0)cv.imwrite:src = cv.imreadcv.imshowsrc = cv.GaussianBlur, 0)gray = cv.cvtColorret, binary = cv.thresholdcv.imshow# 轮廓发现image, contours, hierachy = cv.findContoursfor i in range):# 拟合圆或者椭圆,绘制rrt = cv.fitEllipsecv.ellipse, 2, cv.LINE_AA)x, y = rrtcv.circle, np.int), 4, , -1, 8, 0)cv.imshowcv.imwrite

世界上发生的事情很难,对于它来说,难的人很容易;不做,容易的就难!

1.《曲线拟合 OpenCV中实现曲线与圆拟合》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《曲线拟合 OpenCV中实现曲线与圆拟合》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1681033.html