OpenCV的霍夫变换(Hough Transform)圆检测

本文介绍了如何利用霍夫变换在OpenCV中检测圆形。霍夫变换通过二维累加器寻找可能的圆心位置,然后通过构建半径直方图确定圆的半径。OpenCV的cv::HoughCircles函数结合Canny边缘检测,输出圆心坐标和半径。为了减少误检测,通常会在霍夫变换前对图像进行平滑处理。
摘要由CSDN通过智能技术生成

Hough变换检测圆

霍夫变换也可以用于检测其他几何形体,事实上,可以用参数方程表示的几何体都可以尝试用霍夫变换进行检测。

比如圆形,它对应的参数方程为:r2=(x-x0)2+(y-y0)2

该函数包含三个参数,分别是圆心的坐标和圆的半径,这意味着需要三维的累加器。

OpenCV中实现的霍夫圆检测算法通常是两个步骤:

1. 二维累加器用于寻找可能为圆的位置。由于在圆周上的点的梯度应该指向半径的方向,因此对于每一个点,只有沿着梯度方向的项才得到增加(需要预先设定最大和最小的半径);

2. 若找到了圆心,则构建一维的半径的直方图,这个直方图的峰值对应的是检测到的圆的半径。

OpenCV中的霍夫变换圆检测函数 cv::HoughCircles

它整合了Canny检测和霍夫变换,输出是cv::Vec3f向量,每个元素包含检测圆的圆心坐标和半径(cx, cy, radius)。

另外,在进行霍夫变换之前,先对操作图像进行平滑,以减少可能引起误检测的噪声点。

#include "opencv2/highgui.hpp"
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"

class CircleFinder{
private:
	std::vector<cv::Vec3f> circles;
	double dp;       // 累加器的分
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值