霍夫变换激光线中心提取(基于opencv)
更新:
2018.11.16:
代码已上传:https://download.csdn.net/download/qq_38269418/10788619
平台:
VS2017
C++
OPENCV3库
效果:
原图
结果:
原图:
结果:
步骤:
1.图片预处理,参数可以自己调整
//边缘检测
Canny(srcImage, dstImage, 210, 250, 3);
//灰度化
cvtColor(midImage, dstImage, CV_GRAY2BGR);
2.霍夫变换,画直线
// 定义矢量结构存放检测出来的直线
vector<Vec2f> lines;
//通过这个函数,我们就可以得到检测出来的直线集合了
HoughLines(midImage, lines, 1, CV_PI / 180, 300, 0, 0);
//这里注意第五个参数,表示阈值,阈值越大,表明检测的越精准,速度越快,得到的直线越少(得到的直线都是很有把握的直线)
//这里得到的lines是包含rho和theta的,而不包括直线上的点,所以下面需要根据得到的rho和theta来建立一条直线
//依次画出每条线段
for (size_t i = 0; i < lines.size(); i++)
{
double rho = lines[i][0]; //就是圆的半径r
double theta = lines[i][1]; //就是直线的角度
Point pt1, pt2;
double a