opencv中关于直线检测的问题 5
Line(constCvPoint&head,constCvPoint&tail){aa=tail.y-head.y;bb=head.x-tail.x;cc=head.y...
Line(const CvPoint& head, const CvPoint& tail)
{
aa = tail.y - head.y;
bb = head.x - tail.x;
cc = head.y * tail.x - head.x * tail.y;
if (aa < 0)
{
aa = -aa;
bb = -bb;
cc = -cc;
}
k = -aa/bb;
b = -cc/bb;
}
点的头尾是什么意思,还有aa是什么,k貌似是斜率,那b呢 展开
{
aa = tail.y - head.y;
bb = head.x - tail.x;
cc = head.y * tail.x - head.x * tail.y;
if (aa < 0)
{
aa = -aa;
bb = -bb;
cc = -cc;
}
k = -aa/bb;
b = -cc/bb;
}
点的头尾是什么意思,还有aa是什么,k貌似是斜率,那b呢 展开
1个回答
展开全部
Line(const CvPoint& head, const CvPoint& tail) // 输入的是引用 会直接改变这个点
{
aa = tail.y - head.y; // 这个是两点之间y的距离, (y1-y2) 这个数可正可负
bb = head.x - tail.x; // 这个是两点之间x的距离 (x1-x2)
cc = head.y * tail.x - head.x * tail.y; // 这个是计算直线方程的时候 y=kx+b的需要变量
if (aa < 0)
{
aa = -aa; // 如果a是负数变为正数 (但是对结果没有任何影响,这块绝对是浪费计算时间)
bb = -bb; // 这些都要变化
cc = -cc;
}
k = -aa/bb; // 在这里你可以看到了 结果没有变化 如果没有上一步 这里依然是和原来一样的值
b = -cc/bb;
}
这个程序坏就坏在:
1 输入的时候用到了引用,而这里不仅不能使用引用,而且要用const保护起来,因为你是求直线方程不要把点的数值改变!
2 任何变量,除了循环变量i j 等约定俗成的变量,都不要用aa bb cc这种看不出来意义的变量来写。这里面的aa bb cc 完全可以 用 x_differ y_differ 等能看懂的变量表示
3 其实这个函数很错 你知道吗?连个返回值都没有啊 拜托
{
aa = tail.y - head.y; // 这个是两点之间y的距离, (y1-y2) 这个数可正可负
bb = head.x - tail.x; // 这个是两点之间x的距离 (x1-x2)
cc = head.y * tail.x - head.x * tail.y; // 这个是计算直线方程的时候 y=kx+b的需要变量
if (aa < 0)
{
aa = -aa; // 如果a是负数变为正数 (但是对结果没有任何影响,这块绝对是浪费计算时间)
bb = -bb; // 这些都要变化
cc = -cc;
}
k = -aa/bb; // 在这里你可以看到了 结果没有变化 如果没有上一步 这里依然是和原来一样的值
b = -cc/bb;
}
这个程序坏就坏在:
1 输入的时候用到了引用,而这里不仅不能使用引用,而且要用const保护起来,因为你是求直线方程不要把点的数值改变!
2 任何变量,除了循环变量i j 等约定俗成的变量,都不要用aa bb cc这种看不出来意义的变量来写。这里面的aa bb cc 完全可以 用 x_differ y_differ 等能看懂的变量表示
3 其实这个函数很错 你知道吗?连个返回值都没有啊 拜托
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询