Python+OpenCV实现图片中的圆形检测


Posted in Python onApril 07, 2022

效果展示

Python+OpenCV实现图片中的圆形检测

Python+OpenCV实现图片中的圆形检测

Python+OpenCV实现图片中的圆形检测

中心的三个没检测到

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
w = 20
h = 5
params = cv2.SimpleBlobDetector_Params()
# Setup SimpleBlobDetector parameters.
print('params')
print(params)
print(type(params))
 
 
# Filter by Area.
params.filterByArea = True
params.minArea = 10e1
params.maxArea = 10e3
 
params.minDistBetweenBlobs = 25
 
 
# params.filterByColor = True
params.filterByConvexity = False
 
# tweak these as you see fit
# Filter by Circularity
# params.filterByCircularity = False
# params.minCircularity = 0.2
 
# params.blobColor = 0
# # # Filter by Convexity
# params.filterByConvexity = True
# params.minConvexity = 0.87
 
# Filter by Inertia
# params.filterByInertia = True
# params.filterByInertia = False
# params.minInertiaRatio = 0.01
 
 
# img = cv2.imread("circles/circels.jpg",1)
img = cv2.imread("circles/Snap_001.jpg",1)
 
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# Detect blobs.
# image = cv2.resize(gray_img, (int(img.shape[1]/4),int(img.shape[0]/4)), 1, 1, cv2.INTER_LINEAR)
# image = cv2.resize(gray_img, dsize=None, fx=0.25, fy=0.25, interpolation=cv2.INTER_LINEAR)
minThreshValue = 120
_, gray = cv2.threshold(gray, minThreshValue, 255, cv2.THRESH_BINARY)
gray = cv2.resize(gray, dsize=None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR)
# plt.imshow(gray)
# cv2.imshow("gray",gray)
 
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(gray)
 
print(len(keypoints))
 
 
fig = plt.figure()
# im_with_keypoints = cv2.drawKeypoints(gray, keypoints, np.array([]), (0, 0, 255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
im_with_keypoints = cv2.drawKeypoints(gray, keypoints, np.array([]), (0, 0, 255),  cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
 
plt.imshow(cv2.cvtColor(im_with_keypoints, cv2.COLOR_BGR2RGB),interpolation='bicubic')
fname = "key points"
titlestr = '%s found %d keypoints' % (fname, len(keypoints))
plt.title(titlestr)
plt.show()
 
# cv2.imshow("graykey",gray)
# cv2.waitKey()
 
fig.canvas.set_window_title(titlestr)
 
ret, corners = cv2.findCirclesGrid(gray, (w, h), flags=(cv2.CALIB_CB_SYMMETRIC_GRID + cv2.CALIB_CB_CLUSTERING ), blobDetector=detector )
if corners is not None:
    cv2.drawChessboardCorners(img, (w, h), corners, corners is not None)
    print("find blob")
# # cv2.imshow('findCorners', img)
# cv2.waitKey()
    plt.imshow(img)
plt.show()

以上就是Python+OpenCV实现图片中的圆形检测的详细内容,更多关于Python OpenCV圆形检测的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python下利用OpenCV来旋转图像的教程
Apr 16 Python
在类Unix系统上开始Python3编程入门
Aug 20 Python
Python实现简单登录验证
Apr 13 Python
Python提取网页中超链接的方法
Sep 18 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
Python用for循环实现九九乘法表
May 31 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
Django中使用MySQL5.5的教程
Dec 18 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
May 03 Python
Python getsizeof()和getsize()区分详解
Nov 20 Python
Python中文分词库jieba(结巴分词)详细使用介绍
基于Python实现对比Exce的工具
Apr 07 #Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Python OpenCV之常用滤波器使用详解
python Tkinter模块使用方法详解
一行Python命令实现批量加水印
Apr 07 #Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
You might like
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
ThinkPHP模型详解
2015/07/27 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
axios拦截设置和错误处理方法
2018/03/05 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
给排水专业应届生求职信
2013/10/12 职场文书
办公室秘书自我鉴定
2014/01/18 职场文书
商业融资计划书
2014/04/29 职场文书
小学社会实践活动总结
2014/07/03 职场文书
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL