霍夫圆检测(HoughCircles)
霍夫圆检测
1、霍夫圆检测
从平面坐标到极坐标需要转换三个参数,C(x0,y0,r)C(x_0,y_0,r)C(x0,y0,r),其中(x0,y0)(x_0,y_0)(x0,y0)为圆心。
假设平面坐标中任意一个圆上的点,转换到极坐标中,C(x0,y0,r)C(x_0,y_0,r)C(x0,y0,r)处有最大值,霍夫变换基于此原理。
api:
InputArray: 输入图像,数据类型一般用Mat型即可,需要是8位单通道灰度图像
OutputArray:存储检测到的圆的输出矢量
method:使用的检测方法,目前opencv只有霍夫梯度法一种方法可用,该参数填HOUGH_GRADIENT即可(opencv 4.1.0下)
dp:double类型的dp,用来检测圆心的累加器图像的分辨率于输入图像之比的倒数,且此参数允许创建一个比输入图像分辨率低的累加器。上述文字不好理解的话,来看例子吧。例如,如果dp= 1时,累加器和输入图像具有相同的分辨率。如果dp=2,累加器便有输入图像一半那么大的宽度和高度。
minDist:为霍夫变换检测到的圆的圆心之间的最小距离
param1:它是第三个参数method设置的检测方法的对应的参数。对当前唯一的方法霍夫梯度法CV_HOUGH_GRADIENT,它表示传递给canny边缘检测算子的高阈值,而低阈值为高阈值的一半。
param2:也是第三个参数method设置的检测方法的对应的参数,对当前唯一的方法霍夫梯度法HOUGH_GRADIENT,它表示在检测阶段圆心的累加器阈值。它越小的话,就可以检测到更多根本不存在的圆,而它越大的话,能通过检测的圆就更加接近完美的圆形了。
minRadius:表示圆半径的最小值
maxRadius:表示圆半径的最大值
2、代码实现
#include <opencv2/opencv.hpp>
#include <iostream>using namespace std;
using namespace cv;int main(int argc, char** argv)
{Mat img = imread("G:/testpic/img.png");if (img.empty()){printf("cannot load the image");return -1;}namedWindow("input", WINDOW_AUTOSIZE);imshow("input", img);//均值滤波Mat img_blur;medianBlur(img, img_blur, 3);imshow("blur", img_blur);cvtColor(img_blur, gray, COLOR_BGR2GRAY);//霍夫圆检测,必须为单通道灰度图Mat dst;img.copyTo(dst);vector<Vec3f> pcircles;HoughCircles(gray, pcircles, HOUGH_GRADIENT, 1, 50, 80, 80, 50, 200);for (size_t i = 0; i < pcircles.size(); i++){Vec3f cc = pcircles[i];//画圆circle(dst, Point(cc[0], cc[1]), cc[2], Scalar(0,0,255), 1, LINE_AA);//画圆心circle(dst, Point(cc[0], cc[1]), 2, Scalar(127,255,127), 1, LINE_AA);}imshow("output", dst);waitKey(0);return 0;
}
原图:
圆检测:
霍夫圆检测(HoughCircles)相关推荐
- OpenCV 霍夫圆检测
圆的表示式是: 其中aa和bb表示圆心坐标,rr表示圆半径,因此标准的霍夫圆检测就是在这三个参数组成的三维空间累加器上进行圆形检测,此时效率就会很低,所以OpenCV中使用霍夫梯度法进行圆形的检测. ...
- OpenCV_09 模版匹配和霍夫变换:霍夫线检测+霍夫圆检测
1 模板匹配 1.1 原理 所谓的模板匹配,就是在给定的图片中查找和模板最相似的区域,该算法的输入包括模板和图片,整个任务的思路就是按照滑窗的思路不断的移动模板图片,计算其与图像中对应区域的匹配度,最 ...
- OpenCV中霍夫圆检测
OpenCV中霍夫圆检测 在直线检测中,变换后在r−θr-\thetar−θ空间内曲线交点,然后根据阈值来得到直线.在圆中需要有三个变量圆心坐标和半径,因此变换后的空间在三维空间,根据三维空间中的曲线 ...
- OpenCV基于Python霍夫圆检测—基于梯度的霍夫圆检测
基于梯度的霍夫圆检测 1. 回顾与目标 2. 基于梯度的霍夫圆检测 2.1 问题分析 2.2 基于梯度的霍夫圆检测步骤 3. 基于梯度的霍夫圆检测函数HoughCircles 3.1 函数HoughC ...
- opencv c++ 霍夫圆检测
1.原理 a)对某点,以其为圆心的圆为无数(一圈圈的圆),将其从x-y平面坐标系上转换到r-θ极坐标系上后,则变成了以r.θ为自变量,为固定值,x.y为因变量的式子: b)其余点作同样操作,可以得到, ...
- OpenCV基于Python霍夫圆检测—标准霍夫圆检测
标准霍夫圆检测 1. 简介 2. 标准霍夫圆检测 2.1 情形一 2.2 情形二 2.3 情形三 3. 程序演示 4. 结尾 参考资料 1. 简介 1972年,R. D. Duda和P. E. Har ...
- 霍夫圆检测进行钢管检测
通过霍夫圆检测来检测图片中的圆形.例如钢管检测 HoughCircles里面的参数是可以自己设置的,具体参数的设置,在文章的最后. 再把参数调整一下检测效果还会好一些. import cv2 as c ...
- 使用Python测试霍夫圆检测
目录 1. 目的 2. 霍夫园检测的原理 3. 使用opencv测试 1. 目的 记录使用python学写霍夫圆检测的过程 2. 霍夫园检测的原理 略!别怪我,这个涉及到数学原理.有时间我再进行补充, ...
- Opencv 霍夫变换 霍夫圆检测
霍夫变换是一种特征提取术,在了解霍夫变换 霍夫检测之前 需要首先明白什么是霍夫空间:以圆形举例子,弄明白形状的原理,直线的变换与检测也就不难理解 霍夫空间,是一种三维空间,三个坐标分别为圆的横纵坐标, ...
最新文章
- android 保存 用户名和密码 设置等应用信息优化
- 【常用工具】常用工具收集
- cpickle安装_Py之h5py:Python库之h5py库的简介、安装、使用方法详细攻略
- [BUUCTF-pwn]——[OGeek2019]babyrop
- gps频率范围_一种应用于低电压GPS接收机的高线性度低噪声放大器
- JQuery选择器及radio,checkbox,select取值和反选
- [Linux] 解决virtualbox共享文件夹没有访问权限的问题
- java.lang.InstantiationException: DWR can't find a spring config. See the logs for solutions
- 工具---genymotion
- 数据库接口实验--php实现--
- java通过SMTP发送QQ邮件(参考龙果学院)
- HDUOJ---携程员工运动会场地问题
- MongoDB芒果数据库学习笔记一
- Note For Linux By Jes(11)-程序管理与SELinux 初探
- 如何将手机投屏到windows10上?
- VS无法使用宏定义#define解决方案
- java 关系运算符-逻辑运算符概述-逻辑运算符
- android 连接商米POSV1内置打印机
- [转贴]中国历史上三大盛世的理性审视
- 笔记-高通处理器的备份还原QCN的一点个人分享
热门文章
- 指标类数据标准如何定义?
- 如何把mac照片导入u盘_macbook air里的相片要怎么放到u盘里?
- mysql印象最深的事情_印象最深刻的一件事500字
- 使用Enter键代替Tab键的功能
- luogu P3642 [APIO2016]烟火表演
- tomcat启动(一)
- 魔域显示服务器失败,魔域手游进不去怎么办 魔域服务器爆满进不去解决办法...
- Mysql数据库简要介绍
- 四年级计算机走进传统节日教案,四年级走进中国传统节日的作文范文
- 屏蔽无法验证发行者,你确实要运行此软件吗?的提示