读浅墨博客 十四 笔记
2015-05-30 19:08
351 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">hougn变换检测直线:</span>
C++: void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 )
第一个参数,InputArray类型的image,输入图像,即源图像,需为8位的单通道二进制图像,可以将任意的源图载入进来后由函数修改成此格式后,再填在这里。
第二个参数,InputArray类型的lines,经过调用HoughLines函数后储存了霍夫线变换检测到线条的输出矢量。每一条线由具有两个元素的矢量
表示,其中,
是离坐标原点((0,0)(也就是图像的左上角)的距离。
是弧度线条旋转角度(0~垂直线,π/2~水平线)。
第三个参数,double类型的rho,以像素为单位的距离精度。另一种形容方式是直线搜索时的进步尺寸的单位半径。PS:Latex中/rho就表示
。
第四个参数,double类型的theta,以弧度为单位的角度精度。另一种形容方式是直线搜索时的进步尺寸的单位角度。
第五个参数,int类型的threshold,累加平面的阈值参数,即识别某部分为图中的一条直线时它在累加平面中必须达到的值。大于阈值threshold的线段才可以被检测通过并返回到结果中。
第六个参数,double类型的srn,有默认值0。对于多尺度的霍夫变换,这是第三个参数进步尺寸rho的除数距离。粗略的累加器进步尺寸直接是第三个参数rho,而精确的累加器进步尺寸为rho/srn。
第七个参数,double类型的stn,有默认值0,对于多尺度霍夫变换,srn表示第四个参数进步尺寸的单位角度theta的除数距离。且如果srn和stn同时为0,就表示使用经典的霍夫变换。否则,这两个参数应该都为正数。
#include<iostream> #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; int main(){ Mat src = imread("lines.jpg"); Mat mid, dst; Canny(src,mid,50,200,3); cvtColor(mid,dst,CV_GRAY2BGR); vector<Vec2f> lines; HoughLines(mid,lines,1,CV_PI/180,150,0,0); for (size_t i = 0; i < lines.size(); i++){ 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)); pt1.x = cvRound(x0 - 1000 * (-b)); pt1.y = cvRound(y0 - 1000 * (a)); line(dst,pt1,pt2,Scalar(55,100,195),1,CV_AA); } imshow("原始图",src); imshow("边缘检测后的图",mid); imshow("效果图",dst); waitKey(0); return 0; }
相关文章推荐
- 06-图1. List Components (25) (邻接表实现)
- JAVA 动态代理与AOP编程(面向切面编程)
- Arduuino复合运算符+Arduino基础~~~
- hdu 5248(二分)
- 浏览器原理与内存泄漏
- Python调用Matlab2014b引擎
- 关于detours的用法
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
- linux c编程实现cd目录切换功能(带空格的目录名问题)
- 取得键盘每个按键的keyCode的值
- c++ 多态
- SD-Tax set up
- 英语总结——五月
- android 自学中的散乱笔记
- hdu 5246(模拟)
- 年轻程序员需要学习的5大经验
- nginx rewrite例子
- ScrollView 与 Autolayout
- 母函数
- onSaveInstanceState和onRestoreInstanceState触发的时机