opencv 寻找轮廓线与圆的交点

在项目过程中 我遇到了一个问题就是要求一段不规则轮廓线与一个圆的交点,网上查了一些资料,如果轮廓线是规则的话还能算出轮廓线的方程可以方便的解出交点,但是现在轮廓线是不固定的不规则的所以无法解析出轮廓线的方程, 那么我只能用最笨的办法,弄两个存放圆和轮廓的掩膜然后做 and 运算,找出数值是1 的店就是我要的交点了。

程序如下:

#计算轮廓和圆的交点,返回交点坐标。
def get_contour_circle_intersection(contour,circle):'''计算轮廓和圆的交点,返回交点坐标。contour:轮廓circil:单通道灰度图'''mask = np.zeros(circle.shape, np.uint8)  # 生成和circle 结构相同的掩膜cv2.drawContours(mask, [contour], -1, 255, 1) #画出轮廓dst=cv2.bitwise_and(mask,circle)  #轮廓和圆的 与运算dst=cv2.dilate(dst, None)         #膨胀获得的点res=get_corner(dst)               #获得点的角点坐标return resdef get_corner(grayimg):"""角点测试 Demograyimg :为一个灰度图返回 res角点坐标,1,2是亚像素角点, 3,4是角点"""gray = np.float32(grayimg)cornerP = cv2.cornerHarris(gray, 3, 5, 0.04)cornerP[cornerP > 0] = 255#cornerP=cv2.dilate(cornerP,None)    #膨胀ret, cornerP = cv2.threshold(cornerP, 0.01 * cornerP.max(), 255, 0) #阈值化二值化cornerP = np.uint8(cornerP)cv2.imshow('cornerP', cornerP)# 图像连通域ret, labels, stats, centroids = cv2.connectedComponentsWithStats(cornerP) #??????????# 迭代停止规则criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001)corners = cv2.cornerSubPix(gray, np.float32(centroids), (5, 5), (-1, -1), criteria) #计算亚像素角点res = np.hstack((centroids[1:], corners[1:])) #列表 在水平方向上平铺res = np.int0(res)   #列表取整return res

效果图:

 

上面角点坐标就是 轮廓和圆的交点坐标。

opencv 寻找轮廓线与轮廓线的交点, 轮廓与圆的交点相关推荐

  1. OpenCV寻找复杂背景下物体的轮廓

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 问题提出 这是一个来自OPenCV问答 ...

  2. 如何利用OpenCV寻找轮廓的中心?

    简 介: 本文介绍了利用OpenCV和Python编程来计算形状轮廓的中心点.当然后面还会继续给出如何通过轮廓来分辨物体形状种类,以及对于各自的颜色进行标准. 关键词: OpenCV,contours ...

  3. 使用Python,OpenCV进行涂鸦(绘制文字、线、圆、矩形、椭圆、多边形轮廓、多边形填充、箭头~)

    使用Python,OpenCV进行涂鸦(绘制文字.线.圆.矩形.椭圆.多边形轮廓.多边形填充.箭头) 1. 效果图 2. 原理 2.1 绘制线:cv2.line(canvas, (300, 0), ( ...

  4. 【OpenCV入门指南】第五篇 轮廓检测 上

    <[OpenCV入门指南]第三篇Canny边缘检测>中介绍了边缘检测,本篇介绍轮廓检测,轮廓检测的原理通俗的说就是掏空内部点,比如原图中有3*3的矩形点.那么就可以将中间的那一点去掉. 在 ...

  5. Opencv的使用小教程3——利用轮廓检测实现二维码定位

    Opencv的使用小教程3--利用轮廓检测实现二维码定位 二维码具有什么特征 实现效果 识别二维码的流程 1.预处理图像 2.寻找轮廓 3.通过寻找到的轮廓确定"回"的位置 4.创 ...

  6. 【OpenCV入门指南】第五篇轮廓检测 下

    上一篇<[OpenCV入门指南]第五篇轮廓检测上>介绍了cvFindContours函数和cvDrawContours函数,并作了一个简单的使用示范.本篇将展示一个实例,让大家对轮廓检测有 ...

  7. OpenCV成长之路:直线、轮廓的提取与描述

    http://ronny.blog.51cto.com/8801997/1394139 OpenCV成长之路:直线.轮廓的提取与描述 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  8. python求交点坐标_Python求两个圆的交点坐标或三个圆的交点坐标方法

    计算两个圆的交点 代码如下: # -*- coding: utf-8 -*- import math import numpy as np def insec(p1,r1,p2,r2): x = p1 ...

  9. java 圆的交点_java求两个圆相交坐标

    最近由于项目需要,根据两个圆函数求出相交的坐标.实现代码如下,另感谢两圆求交点算法实现Java代码,虽然他所贡献的代码中存在问题,但仍有借鉴意义. 1.两个圆相交的数学求法 在中学数学中我们知道,一个 ...

最新文章

  1. 王敏捷 - 深度学习框架这十年!
  2. html选择器_HTML的id选择器类选择器
  3. python面向对象开发(类的属性-精讲
  4. ionic overflow:auto失效
  5. 固体加热_干货分享| |固体氧化物燃料电池
  6. Java 中的 Reference
  7. 90后实习生,是如何成长为阿里云分布式NoSQL领域专家
  8. 【错误记录】 ERROR java.lang.NoClassDefFoundError
  9. UI设计实用素材|扁平化设计的模板
  10. Xshell连接Linux下Oracle无法回退的解决办法
  11. 使用apache+mod_wsgi方式部署完成后,访问网站时400(Bad Request)
  12. SVN更改用户名和密码
  13. Python 生成UUID
  14. 【初等概率论】 01
  15. Windows Server 2008安装nodejs
  16. 看一看golang的官方包:strings
  17. win8系统安装配置python_win8下python3.4安装和环境配置图文教程
  18. 2018年上半年综合素质作文
  19. VS2005 常见问题分析
  20. 电商巨头的「隐秘」战场

热门文章

  1. 期货价格分析基本面(期货价格的基本面分析)
  2. 联想笔记本电脑——开启BIOS/CPU开启虚拟化(VT)
  3. 老卫带你学---WLD韦伯局部描述符
  4. 从助力跨境互通到保障农民工,区块链在大湾区做了什么? | 研讨会
  5. 真真是硬件界饕餮盛宴!京东助力英特尔第九代酷睿处理器中国首发!
  6. 爱丁堡大学的PMR(PMR in the University of Edinburgh)【1】
  7. 结构性过剩不改 钢铁业去产能持续推进
  8. 中科大文献管理笔记——文献调研起步
  9. 墨尔本大学计算机科学要求,墨尔本大学新开设计算机科学硕士(附详细学分要求)...
  10. docker常用命令 | game2048网页游戏 | nginx镜像 | 数据卷管理 | docker网络管理 | 构建apache镜像 | Dockerfile常用的命令