hough LIne transform之笔记

  从图像中检测出直线蛮有趣的。

  最近研究了下hough transform,看别人写的原理以及代码。画出直线那有个地方不懂为啥,也没有找到解释。想了大半天才明白。

  于是第一篇博客就记录下这个。

  

float rho = lines[i][0], theta = lines[i][1];
Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000 * (-b));
pt1.y = cvRound(y0 + 1000 * (a));
pt2.x = cvRound(x0 - 1000 * (-b));
pt2.y = cvRound(y0 - 1000 * (a));

  对于opencv 自带的HoughLines(dstImage, lines, 1, CV_PI / 360, 200, 0, 0);得到检测的结果,可以得到极径和角度。

问题是求pt1 pt2时为啥会出现1000?

  其实(x0,y0)是该直线经过的一点,1000作为线段的长度,1000*b就是线段长度在x轴的投影长度,而1000*a就是线段长度在Y轴上的投影。

  线段的左上角的点为(x0 + 1000 * (-b),y0 + 1000 * (a)),而右下角的点为(x0 - 1000 * (-b),y0 - 1000 * (a))。

line(srcImage, pt1, pt2, Scalar(255, 100, 5), 2, CV_AA);

  此函数就画出了一条直线。该直线的长度超过1000,单位是像素?

  接下来,试着自己编写标准HoughLine函数。

转载于:https://www.cnblogs.com/NEVER-OR-EVER/p/6080801.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值