OpenCV:霍夫变换HoughLines vs HoughCircles
1、霍夫线变换:霍夫线变换是一种在图像中寻找直线的方法;OpenCV中支持三种霍夫线变换,分别为标准霍夫线变换、多尺度霍夫线变换、累计概率霍夫线变换。在OpenCV中可以调用HoughLines来进行标准霍夫线变换和多尺度霍夫线变换;调用HoughLinesP函数进行累积概率霍夫线变换。



6、霍夫圆变换示例:#include <opencv2\opencv.hpp>#include <opencv2\h足毂忍珩ighgui\highgui.hpp>#include <opencv2\features2d\features2d.hpp>#include <opencv2\core\core.hpp>#include <opencv2\imgproc\imgproc.hpp>using namespace std;using namespace cv;int main(){ Mat srcImage = imread("test5.jpg"); Mat midImage, dstImage; imshow("srcImg", srcImage); cvtColor(srcImage, midImage, CV_BGR2GRAY); GaussianBlur(midImage, midImage, Size(9, 9), 2, 2); //霍夫圆变换 vector<Vec3f> circles; HoughCircles(midImage, circles, CV_HOUGH_GRADIENT, 1.5, 10, 200, 150, 0, 0); //注意第七的参数为阈值,可以自行调整,值越大,检测的圆更精准 //依次在图中绘制出圆 for (size_t i = 0; i < circles.size(); i++) { Point center(cvRound(circles[i][0]), cvRound(circles[i][1])); int radius = cvRound(circles[i][2]); //绘制圆心 circle(srcImage, center, 3, Scalar(0, 255, 0), -1, 8, 0); //绘制圆轮廓 circle(srcImage, center, radius, Scalar(155, 50, 255), 3, 8, 0); } imshow("【效果图】", srcImage); waitKey(0); return 0;}
