python+OpenCV图像处理(十一)图像轮廓检测

图像轮廓检测

 

(一)检测轮廓

在OpenCV-python中,使用cv2.findContours()函数来对图像进行轮廓检测。

返回三个值:image,contours,hierarchy

contours指的是轮廓本身,hierarchy是每条轮廓对应的属性

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])

参数:

  • 第一个参数是寻找轮廓的图像;
  • 第二个参数表示轮廓的检索模式:cv2.RETR_EXTERNAL表示只检测外轮廓    cv2.RETR_LIST检测的轮廓不建立等级关系,cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。cv2.RETR_TREE建立一个等级树结构的轮廓。
  • 第三个参数method为轮廓的近似方法。cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),  abs(y1-y2))=1。   cv2.CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩阵轮廓只需4个点来保存轮廓信息。    cv2.CHAIN_APPROX_TC89_L1,    cv2.CHAIN_APPROX_TC89_KCOS使用teh-Chini chain近似算法  

 (二)绘制轮廓

OpenCV中使用cv2.drawContours在图像上绘制轮廓

cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[,maxLevel[, offset ]]]]])

参数:

  • 第一个参数传入所要绘制轮廓的背景图片
  • 第二个参数是轮廓本身
  • 第三个参数指定绘制轮廓中的哪条轮廓,如果是-1,则绘制其中的所有的轮廓。thickness表示的是轮廓的宽度,如果是-1(cv2.FILLED),表示为填充模式。

(三)代码实现 

# 轮廓检测
img = cv2.imread('2.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 获取灰度图
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)  # 利用阈值自动选择的方法获取二值图像
image, contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  # 检测轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 1)  # 画出轮廓
cv2.imshow('gray', binary)
cv2.imshow('res', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python+OpenCV图像处理(十二)车牌定位中对图像的形态学组合操作处理

车牌定位中对图像的形态学组合操作处理 所谓的车牌定位,其中最关键的部分就是对图片的处理,参数的设置,并使之拥有泛化能力。 首先传入图片,在进行大规模的图片处理时,因为无法确定图片的尺寸,所以需要将…

ACL 2019 知识图谱的全方位总结

来源:AI科技评论翻译 | 栗峰  审校 | Camel编辑 | Pita ACL 2019已经结束,但其空前的规模仍然震撼人心:2900多篇提交论文,660篇被接收,3000多名会议注册人员,以及4个超过400人的研讨会(比一些…

word只在第一页插入页眉

首先点击插入>页眉 在设计栏中勾上“首页不同”,如下所示:

Redis应用场景(转)

(来源:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html) Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中…

word删除页眉下面的横线

首先点击插入>页眉,输入页眉后,选中页眉内容: 点击“设计”栏: 点击页面边框: 然后按如下设置即可消除页眉下面的横线

TensorFlow 多任务学习

多任务学习 多任务学习,顾名思义,就是多个任务模型同时执行,进行模型的训练,利用模型的共性部分来简化多任务的模型,实现模型之间的融合与参数共享,可以在一定程度上优化模型的运算,提高计算机…

【工业互联网】全球工业互联网十大最具成长性技术展望(2019-2020年)

来源:中国工业互联网研究院来源:中国工业互联网研究院全球工业互联网十大最具成长性技术展望(2019-2020年)工业互联网工业互联网是第四次工业革命的重要基石,在世界范围已步入发展快车道,正处于面临重大突破…

win10调节屏幕亮度_自动调节电脑屏幕亮度软件,保护你的眼睛

本文共514个字,预计用时2分钟小伙伴们,今天给大家分享一个小软件,名字叫做 EyeCareApp,中文名:护眼软件EyeCareApp是一款能够调节屏幕亮度的软件,它可以调整屏幕亮度,滤除蓝光,有效减…

国家计划统筹布局哪些人工智能创新平台?

来源:智造智库建设布局人工智能创新平台,是强化对人工智能研发应用的基础支撑。未来,国家层面计划大力促进各类通用软件和技术平台的开源开放,且按照军民深度融合的要求和相关规定,推进军民共享共用。人工智能开源软硬…

install package vif包_2019-10-03【百宝箱】如何使用wireshark实时远程抓取openwrt路由器包...

前言经常遇到问题的时候需要抓取wifi数据包,常用的做法有三种:1、使用 专用网卡omnipeekwindows软件抓包2、使用 macbook pro的airtool软件抓包3、在路由器上使用tcpdump除了omnipeek 其他都不能实时操作。如何结合openwrt来达到远程实时抓包呢&#xff…

CNN中的卷积操作与权值共享

CNN中非常有特点的地方就在于它的局部连接和权值共享,通过卷积操作实现局部连接,这个局部区域的大小就是滤波器filter,避免了全连接中参数过多造成无法计算的情况,再通过参数共享来缩减实际参数的数量,为实现多层网络提…

python根据矩阵数值大小涂上不同深浅颜色

绘制矩阵颜色图 import matplotlib.pyplot as pltplt.matshow(np.random.rand(5,5), cmapplt.get_cmap(Greens), alpha0.5) # , alpha0.3 plt.show()

20150210--Smarty1-02

20150210--Smarty1-02 三、设计篇 1、Smarty注释 基本语法: {*注释内容*} 示例代码: 2、Smarty中的变量 1)从PHP中分配的变量(普通的变量、数组、对象) 基本语法: $smarty->assign(); 示例代码: demo02.php demo02.html 运行效…

python 绘制时频图 plt.specgram

时频图以横轴为时间,纵轴为频率,用颜色表示幅值。在一幅图中表示信号的频率、幅度随时间的变化 matplotlib.pyplot.specgram(x, NFFTNone, FsNone, FcNone, detrendNone, windowNone, noverlapNone, cmapNone, xextentNone, pad_toNone, sidesNone, s…

华为鸿蒙系统四大特性:基于微内核,面向全场景,分布式架构

来源:今日头条8月9日,在广东东莞召开的华为开发者大会上,华为正式发布了自研操作系统:鸿蒙OS。据华为消费者业务CEO、华为技术有限公司常务董事余承东介绍,鸿蒙OS是基于微内核的面向全场景的分布式操作系统。随着华为全…

VM虚拟机中 localhost login_UTM 2.0 虚拟机来了,解决上网和无声音问题

今天主要讲一下UTM虚拟机,如果你对UTM这款APP不太熟悉,我在这里大致讲一下,这款应用工具,它可以安装在 iPad 和 iPhone 上刷入电脑系统,举例子:在UTM中刷入win7系统。甚至还能刷入 Android 安卓系统&#x…

搅动世界的两大因素

原创:张晓峰提要:移动互联、云计算、大数据、人工智能等技术因素逐步成为新基础设施,而泛连接、泛共享、泛融合与泛协同为代表的非技术因素正在重构这个世界。二者叠加融汇、相因相生。每个人都渐进或主动或被动地“被”函数化、数字化、孪生…

amigo幸运字符什么意思_转载 | 史上最全 python 字符串操作指南

点击蓝字关注,创智助你长姿势【本文已由 清风Python 授权转载(原创)作者:王翔,转载请联系出处】字符串的定义完了,估计很多人看到这个标题就要关网页了,稍等不妨再往下看看?python 定义字符、字符串没有 j…

在物理学的语言里,“生命”是什么?

转自:Darthusian“想象一种语言就像想象一种形式的生命。”--- 路德维希.维特根斯坦,《哲学研究》当今世界人们使用大约6,800种不同的语言。不是每个词都能在不同的语言之间完美地翻译,意义有时会落入语义的裂缝。例如,日语词wabi…

HTML5中的时间类型,另外EL表达式的时间值来读取时间,并且还可以更改时间

HTML5规范里只规定date新型input输入类型,并没有规定日历弹出框的实现和样式。所以,各浏览器根据自己的设计实现日历。目前只有谷歌浏览器完全实现日历功能。相信这种局面很快就会结束,所有的浏览器最终都将会提供原生的日历组件。 如果你使用…