opencv-python 中直线拟合函数cv.fitLine()的2D直线拟合(适合小白观看)

在提取指静脉的过程中,我们需要提取有用的ROI区域。而这时候,我们会采取将手指两边中点拟合成一条直线,求得这个直线的直线方程,然后得到旋转的角度,以便对原来的图像进行旋转操作。当我们知道如何取得手指的边缘中点后,直接用fitLine函数可以方便的按我们想要的方式得到期望 的直线。

首先是官方文档上的函数原型:

 然后我会通过实例来解释每一个参数的意义,代码十分简单:

import cv2 as cv
import numpy as np

test =[(1,2),(2,4),(3,6)]
nptest=np.array(test)
line =cv.fitLine(nptest,cv.DIST_L2,0,0.01,0.01)

 这里的line就是我们的结果了

line的形式是[[cos  a],[sin a],[point_x],[point_y]],前面两项是有关直线与Y正半轴(这里指的是屏幕坐标系)夹角a的三角函数,后面两项就是所得拟合直线上的一点的横纵坐标。我们知道一个直线的倾斜角度和它经过的一个点后就可以唯一确定一条直线。

参数列表解释:

 

points :必须是nparray类型的点集(一般的数列直接报错噢),里面是你想拟合点的坐标 

distType:有很多种,就是有关距离的定义,我们直接用的是最快最简单的L2距离,就是我们常用的最小二乘法。

param:这是一些距离计算类型(distType)中用到的参数,我们这里用的是L2距离,直接写0.实际上,写0的话,系统会自动给你用最优的参数。

reps和aeps:用于表示拟合直线所需要的径向和角度精度,通常情况下两个值均被设定为0.01。

 

初期对这个函数了解到这么多就足够我们使用啦

 

 

  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值