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呢
展开
 我来答
风之风信子
2014-03-20 · TA获得超过1152个赞
知道小有建树答主
回答量:373
采纳率:66%
帮助的人:282万
展开全部
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 其实这个函数很错 你知道吗?连个返回值都没有啊 拜托
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式