话不多说,代码如下:

int main(){Mat srcImage,grayImage;/*加载图片*/srcImage = imread(path);/*判断加载是否成功*/if(srcImage.empty()){cout<<"load pic fail"<<endl;}/*开辟dst矩阵,注意需与src矩阵大小类型一致*/Mat dstImage(srcImage.size(),srcImage.type());/*将src矩阵转化为灰度矩阵*/cvtColor(srcImage,grayImage,COLOR_BGR2GRAY);/*对灰度矩阵进行图像平滑处理(高斯模糊)*/GaussianBlur(grayImage,grayImage,Size(9,9),2,2);vector<Vec3f> circles;/*获取图片中的圆形*/HoughCircles(grayImage,circles,HOUGH_GRADIENT,1.6,10,230,40,12,20);/*在dst矩阵中绘制圆心与圆形*/for(size_t var = 0 ; var < circles.size() ; ++var){Point center(cvRound(circles[var][0]),cvRound(circles[var][1]));int radius = cvRound(circles[var][2]);circle(dstImage,center,0,Scalar(0,255,0));circle(dstImage,center,radius,Scalar(255,0,0));}/*显示src矩阵与dst矩阵*/imshow("src image",srcImage);imshow("circle image",dstImage);
}

Note

  • dstImage的大小以及通道类型需与原图一致
  • HoughCircles为全文最关键的函数,其作用在于获取图片中所有圆形的圆心坐标以及半径,调用此函数需细调其参数以确定所要获取的圆形的类型,它的内部参数含义如下:
  • void HoughCircles(InputArray image,OutputArray circles, int method, double dp, double minDist, double param1=100,double param2=100, int minRadius=0, int maxRadius=0 )
  • image: 8bit,单通道的灰度图数据
  • circles: 寻找到的圆形数据的输出向量,每个向量中包含3/4个元素,其含义位(x,y,radius)/(x,y,radius,votes)
  • method: 检测方法,有HOUGH_GRADIENT以HOUGH_GRADIENT_ALT两种方法选择及
  • dp: 累加器分辨率与图像分辨率的反比,如果dp=1,累加器的分辨率与输入图像相同。如果dp=2,蓄能器有宽度和高度的一半。对于HOUGH_梯度_ALT,建议值为dp=1.5,
  • minDist: 检测到的圆中心之间的最小距离。如果参数是太小,除了一个真实的圆外,可能会错误地检测到多个相邻圆。如果是的话太大,可能会漏掉一些圆圈
  • param1: 在HOUGH_GRADIENT和HOUGH_GRADIENT_ALT两种模式时,它是传递给Canny边缘检测器的两个阈值中较高的一个(较低的阈值小两倍),注意HOUGH_GRADIENT_ALT模式使用Scharr 算法,所以阈值通常较高
  • param2: 该值越小,可以检测到更多根本不存在的圆,该值越大,能通过检测的圆就更加接近完美的圆形
  • minRadius: 检测圆形的最小半径
  • maxRadius: 检测圆形的最大半径s

通过OpenCv的HoughCircles函数获取图片中的圆形相关推荐

  1. 遍历图像 找最小外接矩形 matlab,2018a版本MatLab利用regionprops函数获取图片中物体轮廓最小外接矩形...

    2018a版本MatLab利用regionprops函数获取图片中物体最小外接矩形 本次内容,用于介绍利用matlab中的regionprops函数来获取图像区域中的物体的最小外接矩形信息(位置(x, ...

  2. np.unique函数获取mask图片中不同像素数

    np.unique函数获取mask图片中不同像素数 @Data 2022/12/9 代码: import os import numpy as np from PIL import Imagedef ...

  3. [548]OpenCV之cv2函数

    1.主要函数 1. cv2.imread():读入图片,共两个参数,第一个参数为要读入的图片文件名,第二个参数为如何读取图片,包括 cv2.IMREAD_COLOR:读入一副彩色图片:cv2.IMRE ...

  4. Opencv的使用小教程2——Opencv常用图像处理函数汇总

    Opencv的使用小教程2--Opencv常用图像处理函数汇总 1.blur 2.GaussianBlur 3.medianBlur 4.bilateralFilter 5.腐蚀和膨胀 6.morph ...

  5. 图像边缘检测--OpenCV之cvCanny函数

    图像边缘检测--OpenCV之cvCanny函数 分类: C/C++ void cvCanny( const CvArr* image, CvArr* edges, double threshold1 ...

  6. opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用

    opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...

  7. 【opencv】selective_search函数

    TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,Tensor ...

  8. HoughCircles()函数 画圆心和圆的轮廓

    代码如下: #include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespa ...

  9. OpenCV各模块函数使用实例(5)--特征检测(Feature Detection)

    特征检测是检测图像中的特征信息,比如边缘,线段,角点位置等.在OpenCV中提供了各种特征检测函数和特征提取函数,其中包括有边缘检测(canny),角点检测等,如:Harris角点.ShiTomasi ...

最新文章

  1. SQL Server中灾难时备份结尾日志(Tail of log)的两种方法
  2. 695.岛屿的最大面积
  3. php的数据校验,php 数据类型校验函数的简单示例
  4. [ARM-assembly]-ARMV8的exclusive和inexclusive的介绍
  5. 密码登录模式流程分析
  6. 【好文】为什么必须学好.Net Core?怎样弯道超车新年高薪?这样做,一周就够了!(文末彩蛋)...
  7. c语言二叉树构造与输出,C语言数据结构树状输出二叉树,谁能给详细的解释一下...
  8. obj.val 非数组_在Ruby中使用Array.new(size,obj)创建数组
  9. 程序员的进阶课-架构师之路(18)-图
  10. 上海理工大学:用数字技术打响智慧抗疫信息战
  11. linux分区个数,Linux分区个数限制
  12. [论文阅读] Learning a Unified Classifier Incrementally via Rebalancing
  13. 算法笔记_面试题_6.二进制/位运算相关
  14. android camera 废弃,在Ubuntu系统基于ROS使用废旧Android手机摄像头搭建监控设备
  15. 绑定流详解——网络测试仪实操
  16. float函数python作用_Python内置函数float()
  17. 黑群晖XPEnoboot for DSM 5.2-5967.1
  18. Wireshark 提示和技巧 | TCP Reassembly
  19. 正高、正常高、大地高
  20. stellarium-0.19.3.1-win64.exe下载

热门文章

  1. Mac下安装homebrew(解决error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL)
  2. 红队渗透测试技术:如何通过鱼叉式网络钓鱼获得攻击机会?
  3. html语言加图片,html代码——给图片加边框代码
  4. 【学习笔记+习题集】字符相关(输入输出流,字典树,AC自动机,后缀自动机)(4598字)(更新至2022.12.28)
  5. SlidesJS基本使用方法
  6. lab值意义_lab是什么意思?
  7. 从零搭建 SpringCloud 服务
  8. HTML5期末大作业:英雄联盟网站设计——英雄联盟LOL(4页) HTML+CSS+JavaScript web期末网站设计大作业
  9. jQuery 选择器 选取 class 为 intro 的 p 元素
  10. JQuery替换元素