Java+opencv3.2.0实现hough圆检测功能

 更新时间:2018年02月09日 11:53:13   作者:帅气的猫爪  
这篇文章主要为大家详细介绍了Java+opencv3.2.0实现hough圆检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

hough圆检测和hough线检测的原理近似,对于圆来说,在参数坐标系中表示为C:(x,y,r)。

函数:

Imgproc.HoughCircles(Mat image, Mat circles, int method, double dp, double minDist, double param1, double param2, int minRadius, int maxRadius)

参数说明:

image:源图像
circles:检测到的圆的输出矢量(x,y,r)
method:使用的检测方法,目前只有一种Imgproc.HOUGH_GRADIENT
dp:检测圆心的累加器图像与源图像之间的比值倒数
minDist:检测到的圆的圆心之间的最小距离
param1:method设置的检测方法对应参数,针对HOUGH_GRADIENT,表示边缘检测算子的高阈值(低阈值是高阈值的一半),默认值100
param2:method设置的检测方法对应参数,针对HOUGH_GRADIENT,表示累加器的阈值。值越小,检测到的无关的圆
minRadius:圆半径的最小半径,默认为0
maxRadius:圆半径的最大半径,默认为0(若minRadius和maxRadius都默认为0,则HoughCircles函数会自动计算半径)

示例代码:

public static void main(String[] args)
  {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat src = Imgcodecs.imread("F:\\websbook_com_1589226.jpg");

    Mat dst = src.clone();
    Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);

    Mat circles = new Mat();
    Imgproc.HoughCircles(dst, circles, Imgproc.HOUGH_GRADIENT, 1, 100, 440, 50, 0, 345);
    // Imgproc.HoughCircles(dst, circles, Imgproc.HOUGH_GRADIENT, 1, 100,
    // 440, 50, 0, 0);
    for (int i = 0; i < circles.cols(); i++)
    {
      double[] vCircle = circles.get(0, i);

      Point center = new Point(vCircle[0], vCircle[1]);
      int radius = (int) Math.round(vCircle[2]);

      // circle center
      Imgproc.circle(src, center, 3, new Scalar(0, 255, 0), -1, 8, 0);
      // circle outline
      Imgproc.circle(src, center, radius, new Scalar(0, 0, 255), 3, 8, 0);
    }

    Imgcodecs.imwrite("F:\\dst2.jpg", src);
  }

源图像:


输出图像:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java基础之 Arrays.toString()方法详解

    java基础之 Arrays.toString()方法详解

    这篇文章主要介绍了java基础之 Arrays.toString()方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java匿名内部类的使用方法举例详解

    Java匿名内部类的使用方法举例详解

    Java中的匿名内部类是一种没有名字的局部内部类,主要用于一次性实现接口或继承类的场合,它们常见于GUI事件处理、多线程编程等场景,简化代码结构同时提高开发效率,需要的朋友可以参考下
    2024-09-09
  • IDEA如何一键部署SpringBoot项目到服务器

    IDEA如何一键部署SpringBoot项目到服务器

    文章介绍了如何在IDEA中部署SpringBoot项目到服务器,使用AlibabaCloudToolkit插件进行配置部署,步骤包括设置服务名称、选择文件上传类型、选择jar文件、添加服务器信息、输入上传路径、选择上传后执行的脚本以及执行前的操作命令
    2024-12-12
  • Java转义字符详细介绍

    Java转义字符详细介绍

    这篇文章主要介绍了Java转义字符的相关资料,包括换行符、回车符、换页符、退格符、空字符、空格、制表符、单引号、双引号、反斜杠以及八进制和十六进制字符,通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • Java消息队列Kafka的简单概述

    Java消息队列Kafka的简单概述

    这篇文章主要介绍了Java消息队列Kafka的简单概述,消息系统负责将数据从一个应用程序传输到另一个应用程序,应用程序可以专注于数据,不担心如何共享它,需要的朋友可以参考下
    2023-07-07
  • Java中PropertyDescriptor的用法及说明

    Java中PropertyDescriptor的用法及说明

    这篇文章主要介绍了Java中PropertyDescriptor的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java高效调试排查代码技巧详解

    Java高效调试排查代码技巧详解

    这篇文章主要介绍了Java高效调试排查代码技巧,调试是一项不可或缺的技能,无论你是经验丰富的开发者,还是初入编程世界的新手,都难免会遇到代码出错的情况,有效的调试能帮助我们快速定位并解决问题,提高开发效率,需要的朋友可以参考下
    2025-04-04
  • java中LinkedBlockingQueue与ArrayBlockingQueue的异同

    java中LinkedBlockingQueue与ArrayBlockingQueue的异同

    这篇文章主要介绍了java中LinkedBlockingQueue与ArrayBlockingQueue的异同,需要的朋友可以参考下
    2016-08-08
  • 类似微信说话功能的录音处理代码分享

    类似微信说话功能的录音处理代码分享

    这篇文章主要介绍了类似微信中说话功能的录音处理代码,需要大家自己加UI界面,大家参考使用吧
    2014-01-01
  • Java Socket模拟实现聊天室

    Java Socket模拟实现聊天室

    这篇文章主要为大家详细介绍了Java Socket模拟实现聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论