OpenCV中Hough检测直线中pt1、pt2点的确定
2017-04-10 20:14
337 查看
学习hough变换,一般会看到pt1.x = cvRound(x0 + 1000*(-b));这段代码。一开始可能不是很好理解。查阅了资料和原理,现在写下来分享。
这里的pt1和pt2是一条直线的两个端点,这里已知下图中的rh0 和θ,现在只需要求图中“任意”两点, 使用OpenCV的cvLine函数画出pt1点到pt2的直线 。
看看下图 就明白这里1000什么的是为什么了。
这里是取了点(x0,y0)在直线上上下1000的距离,那么用cvLine画出来的线段就是从pt1 -> pt2的了。那么pt1->pt2的直线距离就是2000。可以取其他的距离,不一定去1000,如600也可以,具体的数字可以自己定义。
1.这个地方也许会出现检测出来的线段长度比pt1->pt2还大,即包含了我们画的线段 , 这是肯定的。
2. 还会出现本来线段没有pt1->pt2这么长,那么我们画的就会过长了。 也是肯定会出现的情况。
因为:CV_HOUGH_STANDARD方法 只能得出rh0 和 θ的值。 这两个值只能确定直线,而不能确定线段是从哪开始到哪结束。
此方法标准型的霍夫变换检测只能确定线段对应的直线。如果你想得到一条直线的两个端点的具体坐标,可以使用CV_HOUGH_PROBABILISTIC(概率型霍夫变换).
这里的pt1和pt2是一条直线的两个端点,这里已知下图中的rh0 和θ,现在只需要求图中“任意”两点, 使用OpenCV的cvLine函数画出pt1点到pt2的直线 。
看看下图 就明白这里1000什么的是为什么了。
这里是取了点(x0,y0)在直线上上下1000的距离,那么用cvLine画出来的线段就是从pt1 -> pt2的了。那么pt1->pt2的直线距离就是2000。可以取其他的距离,不一定去1000,如600也可以,具体的数字可以自己定义。
1.这个地方也许会出现检测出来的线段长度比pt1->pt2还大,即包含了我们画的线段 , 这是肯定的。
2. 还会出现本来线段没有pt1->pt2这么长,那么我们画的就会过长了。 也是肯定会出现的情况。
因为:CV_HOUGH_STANDARD方法 只能得出rh0 和 θ的值。 这两个值只能确定直线,而不能确定线段是从哪开始到哪结束。
此方法标准型的霍夫变换检测只能确定线段对应的直线。如果你想得到一条直线的两个端点的具体坐标,可以使用CV_HOUGH_PROBABILISTIC(概率型霍夫变换).
相关文章推荐
- opencv 霍夫变换检测直线中pt1、pt2点的确定
- opencv 霍夫变换检测直线中pt1、pt2点的确定
- Opencv中 霍夫线变换检测直线中pt1、pt2点的确定
- [opencv]中霍夫变换检测直线中pt1、pt2点的确定
- opencv标准霍夫变换检测直线以及描绘每条线段中pt1、pt2点的确定
- OpenCV学习笔记(24)关于hough变换中pt1、pt2点的确定
- 霍夫变换直线检测houghlines及opencv的实现分析
- 霍夫变换直线检测houghlines及opencv的实现分析
- opencv中标准Hough变换检测出的直线参数
- python opencv -详解hough变换检测直线与圆
- OpenCV自学笔记5:Hough变换检测直线和圆
- 霍夫变换直线检测houghlines及opencv的实现分析
- OpenCV中Hough直线检测和圆检测
- OpenCV2马拉松第22圈——Hough变换直线检测原理与实现
- OpenCV学习之Hough变换检测直线
- Java调用OpenCV进行Hough变换直线检测
- Java+opencv3.2.0实现hough直线检测
- OpenCV3.0 Examples学习笔记(12)-houghlines.cpp-通过HoughLinesP函数实现直线检测
- OpenCv中用hough变换检测直线,有图有真相
- OpenCV 第六章 Hough 直线检测、圆检测