本文编写了一种轮廓对比方法检测圆形,比霍夫检测更准确一些。
输入为路径,如果有圆,则返回圆的轮廓点,还可以画出来。
备注: cnt2 是圆的集合点,我事先把圆的集合点保存为了numpy格式,在调用就ok。

import numpy as np
import cv2def img_read(path):  #读图片,返回二值图image = cv2.imread(path)img_gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)   ret,th1 = cv2.threshold(img_gray,200,255,cv2.THRESH_BINARY)return th1
def img_erosion(image,k):   #图像腐蚀 增强线条 k为核大小kernel = np.ones((k,k),np.uint8)  erosion = cv2.erode(image,kernel,iterations = 1)
#    dilation = cv2.dilate(th1,kernel,iterations = 1)return erosion
def drawContours(image,counts): #根据点画出点图像color = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)dst = cv2.drawContours(color, counts, -1, (0,255,0), 2) cv2.imshow("dst", dst)cv2.waitKey(0)path="test_images/26.jpg"  #图片路径
#path2="test_images/20.jpg"
def circle(path): #检测圆,返回圆的列表img1=img_read(path)img_er=img_erosion(img1,3)    #图像增强img1,contours1,hierarchy1=cv2.findContours(img_er,cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)     #找轮廓点ret_list=[] #相似率cnt_list=[] #圆的点for contour in contours1:   cnt1 = contour     cnt2 = np.load("counts2.npy")ret = cv2.matchShapes(cnt1,cnt2,1,0.0)   #图片1与cnt2(标准圆的轮廓点)做匹配对比if ret<0.005: #阀值设置   #越小,则越像圆ret_list.append(ret)cnt_list.append(cnt1)
#    print(ret_list)drawContours(img1,cnt_list)   #画出图像return cnt_listcircle(path)   #运行程序

圆形检测--轮廓检测法相关推荐

  1. 【OpenCV 4开发详解】圆形检测

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  2. python 圆形检测_基于opencv-python的圆形检测

    一.图像基本处理 通常我们获取到的原始图像包含了比较多的背景噪声,影响我们对目标的提取,因此在进行变换前,我们会采取一些预处理方法对图像进行增强,如: 1.灰度处理 2.边缘检测,常用Canny算子: ...

  3. MATLAB小技巧(10)圆形检测实例

    MATLAB小技巧(10)圆形检测实例 前言 一. MATLAB仿真 二. 仿真结果 三. 小结 前言 MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的 ...

  4. python 圆形检测_python下用OpenCV的圆形检测

    一.简介: 初次使用python的你一定感受到了python的便捷.作为高级编程语言只需调用类库即可. 对于圆形物体识别问题,opencv提供了大量方法. (代码文末附上) 二.检测步骤: 2.1读取 ...

  5. opencv之圆形检测

    注:此教程是对贾志刚老师的opencv课程学习的一个记录,在此表示对贾老师的感谢. 需求: 找出下图中的圆形. 如果直接用霍夫圆检测 的话,效果很差. 代码: #include <iostrea ...

  6. OpenCV直线和圆形检测

    直线检测,通过HoughLines和HoughLinesP函数进行计算,区别是:HoughLines使用标准的Hough变换,HoughLinesP使用概率Hough变换.HoughLinesP是标准 ...

  7. 手工数控铣_铣圆形内轮廓01

    一把立铣刀,可以搞定 毛坯8080,厚度30 键槽铣刀,直径20mm 编程代码 加工内轮廓,粗加工和金加工 首先安全程序段. 在这里插入图片描述 .学习了之后,尝试自己编写一个零件. 零件140110 ...

  8. python圆形检测_如何检测图像中的圆形区域并用Python将其居中?

    我想你有很多选择.我想到的两个简单方法是将输入图像的阈值设置为一个低强度值,这将给你一个白色的圆圈.然后你可以对圆进行Hough变换来找到圆心.在 或者,可以使用阈值白色像素的距离变换,并取此距离变换 ...

  9. Opencv(六)模板匹配、轮廓检测、轮廓周围绘制矩形框和圆形框

    模板匹配介绍 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域. 所以模板匹配首先需要一个模板图像T(给定的子图像) 另外需要一个待检测的图像-源图像S 工作方法,在带检测图像上,从左到右,从 ...

最新文章

  1. 【C++】lambda 表达式
  2. Bottles Arrangement
  3. Nexus如何上传自己的jar包 (upload artifactory)
  4. 开发、测试与QA的区别以及其他
  5. Spring MVC Ajax返回中文乱码
  6. linux barrier,如何决定何时启用Linux文件系统barrier功能?
  7. CentOS6.5搭建MySQL5.1主从复制
  8. 用户标签照妖镜api、旺旺搜索搜索标签api、用户标签查询api、淘宝用户标签透视透视api
  9. 平面波角谱积分 matlab,第2章2_5平面波角谱.ppt
  10. mysql 正则表达式 标点符号_正则表达式-匹配标点符号
  11. android killer 反编译工具,androidkiller反编译软件使用与踩坑并解决的过程
  12. 香港金像奖40年发展史:香港电影最后的倔强
  13. 巨头卡位物联网 纷纷瞄准家庭网关设备
  14. CSS 学习笔记总结(借鉴黑马程序员pink老师前端入门)
  15. 手把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)
  16. c语言合法自定义标识符_C语言合法标识符有哪些
  17. python nameerror什么意思_我用Python编写的GTIN程序中的“NameError”是什么意思?
  18. BP神经网络学习笔记
  19. BZOJ4755: [JSOI2016]扭动的回文串——题解
  20. Python调用CANape读取和写入XCP Device的变量实现自动化标定

热门文章

  1. Spark:运行原理 图解
  2. C语言求最大公约数常见思路
  3. sshd启动失败,一直重启
  4. 正态分布 概率密度函数PDF
  5. 异常处理——template中的image组件图片未显示
  6. 电子工程师的自我修养 - 单片机控制继电器
  7. cad转换成jpg不清楚,教你如何解决
  8. 一起DIY四轴飞行器(三)添加实时操作系统--freeRTOS
  9. 工科毕业论文考试题目
  10. 流媒体客户端的结构与原理浅析