Java+opencv3.2.0实现hough圆检测功能
时间:2019-04-13
本文章向大家介绍Java+opencv3.2.0实现hough圆检测功能,主要包括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); }
源图像:
输出图像:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- Spring Security (三) 核心配置解读
- Spring Cloud配置中心获取不到最新配置信息的问题
- 总是听别人说响应式布局,原来这么简单
- Spring Cloud Zuul重试机制探秘
- Eureka中RetryableClientQuarantineRefreshPercentage参数探秘
- Edgware.RC1中ZuulFallbackProvider的改进
- JPA的多表复杂查询:详细篇
- 尝试使用Memcached遇到的狗血问题
- Enumerable#Zip 实现一下
- 更新自己,不要影响其他人
- 【译】Spring官方教程:Spring Boot整合消息中间件RabbitMQ
- [实录]解决Migrator.Net 小bug
- Jenkins Pipeline插件十大最佳实践!
- Spring Cloud Hystrix的请求合并
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- FreeRTOS内核应用开发手记
- 移植FreeRTOS后运行,卡在uxDeletedTasksWaitingCleanUp
- 99%的人都不知道内网、外网、宽带、带宽、流量、网速之间的区别与联系
- 什么是前缀树--打开了我的新思路
- 一个案例搞懂原码、反码、补码,不懂得请看过来
- 人人都在用,但你却不知道它背后发生了什么——浏览器的工作原理:浏览器幕后揭秘
- 这有一把钥匙,打开MySQL死锁问题!
- 普通人如何全面了解大数据的特点,意义和发展前景
- 面试官问我Linux下常见网络命令
- 最全常用User-Agent
- 聊到JVM(还怕面试官问JVM吗?)
- Android.location.Address类方法获取GPS定位信息
- Python二叉树详解笔记
- 《剑指offer》第七天:二叉树的下一个结点
- 后台登录微信并定时发送消息,消息包括农历、阴历、天气;自动监测是否断线,支持邮箱发送二维码登录;适合于挂在服务器上运行