霍夫变换
霍夫线变换
参考:霍夫变换(Hough)
opencv中的霍夫线变换:在使用霍夫线变换前,首先要对图像进行边缘检测的处理,即霍夫线变换的直接输入只能是边缘二值图像。OpenCV支持三种不同的霍夫线变换:标准霍夫变换SHT、多尺度霍夫变换MSHT和累计概率霍夫变换PPHT。
vector<Vec2f> lines;//定义一个矢量结构lines用于存放得到的线段矢量集合 HoughLines(midImage, lines, 1, CV_PI / 180, 150, 0, 0);
累计概率霍夫变换:
vector<Vec4i> lines;//定义一个矢量结构lines用于存放得到的线段矢量集合 HoughLinesP(midImage, lines, 1, CV_PI / 180, 80, 50, 10); for (size_t i = 0; i < lines.size(); i++) { Vec4i l = lines[i]; line(dstImage, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(186, 88, 255), 1, LINE_AA); }
霍夫圆变换
OpenCV中霍夫圆变换函数为HoughCircles(),通过霍夫变换检测灰度图像中的圆。不同于霍夫线变换需要输入二值图像,霍夫圆变换输入为灰度图像。