首页 > Python资料 博客日记
Python opencv进行圆形识别(圆检测)
2024-05-13 06:00:03Python资料围观352次
文章Python opencv进行圆形识别(圆检测)分享给大家,欢迎收藏Python资料网,专注分享技术知识
圆形识别(圆检测)是图像识别中很常见的一种处理方式,最核心的是cv2.HoughCircles这个函数实现的圆形检测。当然还有一些其他的处理过程,以下详述:
1 读入图像
首先需要读取一个图像文件,将其作为一个变量
img = cv2.imread("save1.jpg", 0) # 0或者cv2.IMREAD_GRAYSCALE 读取为灰度图像
img2 = cv2.imread("save1.jpg", 1) # 1或者cv2.IMREAD_COLOR 读取为为彩色图像
img是一个ndarray,2维结构,包含的是灰度化后的图像信息
img2是一个ndarray,3维结构,包含的是RGB彩色图像信息,比img2多出一个色彩维度
如下图,img2是3个方括号“[”
2 图像预处理
可以对图像进行裁切,滤波等处理,当然不处理也可以直接用,以下展示一下:
裁切
size = 400
x1 = 560
y1 = 200
x2 = x1+size
y2 = y1+size
cut = img[y1:y2, x1:x2]
滤波加二值化
numpy_img = cv2.adaptiveThreshold(cut, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 15) # 自动阈值二值化
显示中间处理过程
有时候我们需要直观的看到中间处理过程的图像样貌,可以随时显示
cv2.imshow("img", img)
cv2.imshow("cut", cut)
cv2.imshow("numpy_img", numpy_img)
cv2.waitKey(0)
注意imshow函数,第一个参数是要显示的窗口的标题,不得用中文和中文标点,必须全英文,否则会乱码,第2个参数是待显示的图像变量
最后一行可以没有,如果有的话,程序会在此等待,直到有按键动作,程序才继续往后运行。这对我们调试比较有用。
3 圆形识别
# 圆心距 canny阈值 投票数 最小半径 最大半径
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 170, param1=100, param2=60, minRadius=60, maxRadius=90)
大概讲一下重要的几个参数,参数与实际的图像尺寸相关,不是一个参数用所有的图
圆心距:170 圆心距小于此值的圆不检测,以减小计算量
canny阈值:图像二值化的参数,根据实际情况调整
投票数:一个圆需要至少包含多少个点,才认为这是一个圆
最小半径,最大半径:在此值之间的圆才是需要的圆,超过范围不检测,以减小计算量
检测完的结果保存在circles 中
可以自己调整参数以观察结果
4 显示检测结果
没啥好说的,代码很简单,就是对于每个结果画出圆和圆心
arr1 = np.zeros([0, 2], dtype=int) # 创建一个0行, 2列的空数组
if circles is not None:
circles = np.uint16(np.around(circles)) # 4舍5入, 然后转为uint16
for i in circles[0, :]:
arr1 = np.append(arr1, (i[0], i[1])) # arr1是圆心坐标的np数组
# print(arr1)
cv2.circle(img2, (i[0], i[1]), i[2], (0, 0, 255), 3) # 轮廓
cv2.circle(img2, (i[0], i[1]), 2, (0, 0, 0), 6) # 圆心
5 完整代码和示例图像
可以在这里下载:示例代码下载
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程