精华内容
下载资源
问答
  • 在OpenCV中求解两条直线的交点

    千次阅读 2018-08-01 10:51:02
    问题1:给出两组坐标[x1,y1][x2,y2]确定直线Line1? Line1的方程表示: ------------(1) 分别带入两组坐标,因为,,三个参数可以同比例放大缩小的。所以可以用下面这组参数来表示: 万幸没有...

    问题1:给出两组坐标点[x1,y1][x2,y2]确定直线Line1?

    Line1的方程表示为:

    a*x+b*y+c=0   ------------(1)

    分别带入两组坐标点,因为abc三个参数可以同比例放大缩小的。所以可以用下面这一组参数来表示:

    a = y2 - y1;

    b = x1 - x2;

    c =x2*y1- y2*x1;

    万幸没有除法(码农最怕除法)。这就是为什么不用斜率来表达方程的原因。

    问题2:Line1与Line2的交点?

    因为标题也写出来了在OpenCV环境下,OpenCV中有非常好用的矩阵Mat数据类型。

    Line1:a1*x+b1*y+c1=0

    Line2:a2*x+b2*y+c2=0

    所以[x,y]坐标为:

    \begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} a1 &b1 \\ a2&b2 \end{bmatrix}^{-1}*\begin{bmatrix} -c1\\ -c2 \end{bmatrix}       -------------(2)

    具体在c++编程实践中,

    	Mat ab_matrix = (Mat_<float>(2, 2) << a1,b1,a2,b2);//两条直线的系数矩阵2*2
    	Mat C_matrix = (Mat_<float>(2, 1) << -c1,-c2);//两条直线的C参数矩阵2*1
    	Mat xy_matrix = (Mat_<float>(2, 1));//两条直线的交点坐标矩阵2*1
    	xy_matrix = ab_matrix.inv()*C_matrix;

    思考的问题:蛮有意思的,后期贴到评论里。

    问题1中一开始求解直线的方程我并非想要用代数法,觉得能用矩阵标的就用矩阵(opencv中mat数据类型操作还算比较快速的),什么情况下不能够用矩阵法求解直线方程?

    问题2中求交点坐标[x,y],要用到矩阵求逆,这对于程序员来说与除法没什么区别,所以当行列式等于0,即无法求逆时意味着什么?

     

    展开全文
  • 我对一组进行线性回归,得到一条直线。第2步。我通过平均这一组得到一个中心步骤3。我想找到一条与步骤1中回归线垂直并穿过步骤2中提到的中心的直线。我的想法:假设回归线y1=k1*x1+b1,垂直线y2=k2*x2+b2,...

    第1步。我对一组点进行线性回归,得到一条直线。

    第2步。我通过平均这一组点得到一个中心点

    步骤3。我想找到一条与步骤1中回归线垂直并穿过步骤2中提到的中心点的直线。

    我的想法:假设回归线y1=k1*x1+b1,垂直线y2=k2*x2+b2,那么k2=-1/k1

    问题:从图上看,这两条直线不是垂直。为什么?发生什么事了

    我的python代码:`import numpy as np

    import scipy.linalg

    import matplotlib.pyplot as plt

    from openpyxl import load_workbook

    x = [140.0, 139.0, 145.0, 151.0, 156.0, 160.0, 162.0, 162.0, 156.0, 139.0, 129.0, 124.0, 125.0, 128.0, 127.0, 126.0, 126.0, 132.0, 139.0, 145.0, 150.0, 156.0, 155.0, 148.0, 135.0, 129.0, 125.0, 127.0, 128.0, 126.0, 123.0, 124.0, 130.0, 135.0, 142.0, 151.0, 158.0, 155.0, 148.0, 140.0, 126.0, 124.0, 127.0, 127.0, 126.0, 126.0, 126.0, 131.0, 138.0, 141.0, 159.0, 167.0, 162.0, 155.0, 147.0, 141.0, 138.0, 140.0, 140.0, 140.0, 138.0, 143.0, 150.0, 155.0, 163.0, 173.0, 178.0, 173.0]

    y = [621.0, 621.0, 630.0, 638.0, 636.0, 635.0, 635.0, 634.0, 628.0, 623.0, 617.0, 614.0, 618.0, 622.0, 617.0, 610.0, 612.0, 622.0, 626.0, 623.0, 622.0, 624.0, 625.0, 618.0, 613.0, 607.0, 608.0, 614.0, 614.0, 608.0, 603.0, 612.0, 616.0, 617.0, 616.0, 618.0, 622.0, 622.0, 615.0, 609.0, 607.0, 610.0, 612.0, 607.0, 606.0, 601.0, 611.0, 617.0, 615.0, 614.0, 619.0, 624.0, 625.0, 619.0, 615.0, 613.0, 618.0, 622.0, 616.0, 610.0, 614.0, 628.0, 625.0, 624.0, 628.0, 638.0, 646.0, 645.0]

    def get_center(x,y):

    x = x[:-1]

    y = y[:-1]

    x0 = np.mean(x)

    y0 = np.mean(y)

    return x0, y0

    #center point

    x0,y0 = get_center(x,y)

    #linear regression

    # fit_fn is now a function which takes in x and returns an estimate for y

    fit = np.polyfit(x,y,1)

    fit_fn = np.poly1d(fit)

    plt.plot(x0,y0,'bo')

    #get the linear regression line

    plt.plot(x,y, 'ro', x, fit_fn(x), '--k')

    #get the perpendicular line going through the center point

    plt.plot(x,(-1.0/fit[0])*(x-x0)+y0,'--b')

    plt.grid(True)

    plt.show()

    `

    展开全文
  • 这里的pt1和pt2是一条直线的两个端点,这里已知下图中的rh0 和θ,现在只需要求图中“任意”两点, 使用OpenCV的cvLine函数画出pt1点到pt2的直线 。 看看下图 就明白这里1000什么的是为什么了。

    学习hough变换,一般会看到pt1.x = cvRound(x0 + 1000*(-b));这段代码。一开始可能不是很好理解。查阅了资料和原理,现在写下来分享。

    这里的pt1和pt2是一条直线的两个端点,这里已知下图中的rh0 和θ,现在只需要求图中“任意”两点, 使用OpenCV的cvLine函数画出pt1点到pt2的直线 。

    看看下图 就明白这里1000什么的是为什么了。

    0_1325123993yZ4k.gif

    这里是取了点(x0,y0)在直线上上下1000的距离,那么用cvLine画出来的线段就是从pt1 -> pt2的了。那么pt1->pt2的直线距离就是2000。可以取其他的距离,不一定去1000,如600也可以,具体的数字可以自己定义。

    1.这个地方也许会出现检测出来的线段长度比pt1->pt2还大,即包含了我们画的线段 , 这是肯定的。

    2. 还会出现本来线段没有pt1->pt2这么长,那么我们画的就会过长了。 也是肯定会出现的情况。

    因为:CV_HOUGH_STANDARD方法 只能得出rh0 和 θ的值。 这两个值只能确定直线,而不能确定线段是从哪开始到哪结束。

    此方法标准型的霍夫变换检测只能确定线段对应的直线。如果你想得到一条直线的两个端点的具体坐标,可以使用CV_HOUGH_PROBABILISTIC(概率型霍夫变换).


    展开全文
  • 首先我们观察直线,不同两点可以确定一条直线,然后从直线寻找规律。在平面直角坐标系中任意不同两点(x1,y1)和(x2,y2),再画一些平行X轴和Y轴的辅助线。然后在这条直线再取一个点设(x3,y3)根据相似三角形...

    一、什么是直线及表示方法。
    首先我们观察直线,不同两点可以确定一条直线,然后从直线寻找规律。在平面直角坐标系中任意不同两点设为(x1,y1)和(x2,y2),再画一些平行X轴和Y轴的辅助线。然后在这条直线再取一个点设为(x3,y3)根据相似三角形对应边比值相等这个原理,我们可以发现同一条直线上的点满足一个关系:
    (y2-y1)/(x2-x1)=(y3-y2)/(x3-x2)【公式一】。
    同时,我们设公式一这个等于K(称为斜率)。在平面中不难发现,y=Kx这个可以表示一条直线。但是此时的直线全部都要过原点,为了表示全部的直线,我们对直线进行一个平移操作,可以上下或者左右平移都是一样的,为了表示更方便,我们选择上下平移,上下平移就是x变y进行加减。假设平移m,m为正往上平移,为负就往下平移,我们得到结果为:
    y=kx+m【公式二】
    这样我们就可以用公式二来表示全部的直线。
    二、由y=kx+m转换为ax+by+c=0
    注意这里的k,m,a,b,c都只是一个假设,表示一种形式。首先对y=kx+m进行移项得到
    kx-y+m=0【公式三】
    既然都是假设的数,我们也可以换一种形式来假设,那假设a=k,b=-1,c=m,然后就可以得到
    ax+by+c=0【公式四】

    展开全文
  • 直线的方程教案.doc

    2021-05-19 10:07:36
    在推导直线方程的点斜式时,根据直线这一结论,先猜想确定一条直线的条件,再根据猜想得到的条件求出直线的方程. 二、教学目标 1.知识与技能 (1)理解直线方程的点斜式、斜截式的形式特点和适用范围; (2)能...
  • 平时也没有过多的去想为什么要这样做,就把这个当做是一条公理了,就像是数学中“个不同的点确定一条直线,三个不在同一直线上的确定一个平面”一样那么简单。 最近又一次在做一个WinForm程序,
  • 对于2,直线在Matlab里面是个点确定,因此交点如果是段线(无穷个点)的情况,可能只是显示点为交点; 对于3,很简单的例子,参数方程 x=cos,y=sin 在数学分析(即连续空间)层面上是个圆,但是如果你在...
  • 题意: :给定凸包的几个 还有几个未知 也许在...分析: 点确定一条直线 而凸包的一条边至少要三个才能确定 想想为什么呢 我们用ANdrew算法求凸包的思想是什么 三个构成一个左转 下面看一个图   如图
  • 一元线性回归

    2020-10-23 18:51:36
    在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。 简单来讲就是给一些离散的,求出一条预测直线h(x)=wx+bh(x)=wx+bh(x)=wx+b,这条直线的...
  • 题目传送门 做到一半就放弃了,后来看了官方题解后被震惊到原来这题...我们知道两点确定一条直线,但是三点以上落在同一直线上的可能是存在的,首先我们要求出总共有几条不同的直线,然后这样的一条直线与其他斜率不...
  • [转]http://www.zxbc.cn/html/20081224/69265_2.html通常我们在做多线程编写...平时也没有过多的去想为什么要这样做,就把这个当做是一条公理了,就像是数学中“个不同的点确定一条直线,三个不在同一直线上的确定
  • 误差来源于何处?...简单的model受不同data的影响较小(我的理解:两点确定一条直线,曲线需要更多的点? 极端例子:f(x)=cf(x)=cf(x)=c ,不论什么data,output都是c Bias 黑线:真实function 蓝线:5000
  • 一个只有一条直线。 四有三个直线,依此类推。 如果我们有一个软件拍摄图像并弄清楚它有多少个循环,多少条直线,以及这些循环和直线的相对位置,该怎么办? 也许我们然后可以使用此信息并写下一堆简单的规则来确定...
  • 所产生的向量的终点会描出一条直线。 我们可以想象输入一个向量都移动到对应输出向量的位置 为了更好的体会整个空间形状上的改变, 同时对无限网格上的所有同时做变换 他们能给你一种挤压和变形空间的感觉 但幸运...
  • 对极几何学习与实践

    2020-05-26 15:23:24
    对极约束是一种约束条件,是在我们不知道三维P的真实空间三维位置的时候,通过相关的几何关系将三维P在第二帧的图像上有可能的投影位置在约束条件下为一条直线上(就是极线)。然后,通过相关特征匹配,我们确定...
  • 到目前为止,我们选择一条线来估计我们的输出已经相当快而松散-我们只是在数据集的第一和最后一点之间划了一条线。 今天好,我们走得更远。 在这里,我们迈出了训练模型以匹配数据的第一步。 训练的第一步是计算...
  • 在参数空间上(不妨假设二维空间)有一些样本,找一条曲线尽量拟合所有的样本。这里面的“找一条”曲线不是漫无边际的找,而是先假定曲线的形式,如:直线、二次曲线等等,然后来学习确定曲线的各项参数。一...
  • GSP5.exe

    2020-04-01 09:16:40
    软件功能编辑 几何画板是适用于数学、平面几何、物理的矢量分析、作图,函数作图的动态几何工具。...1.这样尺规作图外公切线的作法,有缺点,当⊙AD的半径小于半径⊙BC时,外公切线不见了(您知道为什么吗?),如何完
  • IQ面试题(经典智力题)

    2009-08-20 10:50:01
    6.在9个上画10条直线,要求每条直线上至少有三个? 7.在天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的? 8.怎么样种植4棵树木,使其中任意棵树的...
  • arcgis工具

    2012-10-22 22:37:31
    个图斑的边界确定,需要实现个图斑的无缝拼接时,可以把图斑拉伸覆盖确定边界的图斑的部分,然后用下面的图斑剪区上面的图斑。 方法二:图斑之间有小的缝隙,可以先在缝隙上任意补画个图斑,然后合并...
  • MAPGIS地质制图工具

    2013-05-06 16:15:30
    2、四点插入等高线必需先选择两条线(若未先选择线当点击完第三个点时即弹出对话框,且插入会失败),然后在线上点四个点,前两点一条线上,后两点在另外一条线上。如果出现乱线,先改一条线的方向再试。 3、直接...
  • 空间直角坐标系.doc

    2021-05-19 10:00:12
    ②在初中,我们学过平面直角坐标系,平面直角坐标系是以一点原点O,过原点O分别作两条互相垂直的数轴Ox和Oy,xOy称平面直角坐标系,平面直角坐标系具有以下特征:两条数轴:①互相垂直;②原点重合;③通常取向右、向上...
  • QT 绘图函数

    2012-12-21 17:16:03
    一个路径能够确定一个轮廓,由这个轮廓确定的区域可以由刷子来填充。在图8.5(c)中我们没有设置刷子,因此只绘制了轮廓。 以上的三个例子都是使用了默认的刷子(Qt::SolidePattern,Qt::DiagCrossPattern,Qt::...
  • flash shiti

    2014-03-14 10:32:41
    10. 某电影中,只有个layer1,其上放置个有个元件(test1 和test2)组合成的组合体, 选择这个组合体执行打散Ctrl+B,然后右键单击执行Distribute to layers,那末: □ A. 这个电影中将增加个新层:layer2 ...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

两点为什么确定一条直线