概述
问题1:给出两组坐标点[x1,y1][x2,y2]确定直线Line1?
Line1的方程表示为:
------------(1)
分别带入两组坐标点,因为,,三个参数可以同比例放大缩小的。所以可以用下面这一组参数来表示:
万幸没有除法(码农最怕除法)。这就是为什么不用斜率来表达方程的原因。
问题2:Line1与Line2的交点?
因为标题也写出来了在OpenCV环境下,OpenCV中有非常好用的矩阵Mat数据类型。
Line1:
Line2:
所以[x,y]坐标为:
-------------(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,即无法求逆时意味着什么?
最后
以上就是跳跃自行车为你收集整理的在OpenCV中求解两条直线的交点的全部内容,希望文章能够帮你解决在OpenCV中求解两条直线的交点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复