这篇文章主要介绍了opencv python图像轮廓/检测轮廓/绘制轮廓的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
图像的轮廓检测,如计算多边形外界,形状毕竟,计算感兴趣区域等。
轮廓:开始
<强>轮廓强>
简单地解释为连接所有连续点(沿着边界)的曲线,具有相同的颜色或强度。
轮廓是形状分析和物体检测和识别的有用工具
<强>注意强>
- <李>
为获得更好的准确性,请使用二值图,在找到轮廓之前,应用阈值法或精明的边缘检测
李> <李>从OpenCV 3.2开始,<代码> findContours() 代码>不再修改源图像,而是将修改后的图像作为三个返回参数中的第一个返回
李> <李>在OpenCV中,查找轮廓是从黑色背景中查找白色对象
李><代码> findContours(图像、模式、方法[,轮廓[,层次结构[,抵消]]])代码>
- <李>
图片:原图像
李> <李>模式:轮廓检索模式
李> <李>方法:轮廓近似方法
李>输出为:修改后的图像,轮廓,层次结构
轮廓是所有轮廓的列表。每个单独的轮廓是对象边界点的坐标。
轮廓检索模式含义cv2.RETR_EXTERNAL只检测外轮廓cv2.RETR_LIST提取所有轮廓并将其放入列表,不建立等级关系cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层cv2.RETR_TREE建立一个等级树结构的轮廓轮廓逼近方法含义cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即马克斯(abs (x1, x2)), abs (y2-y1))==1 cv2.chain_approx_simple压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息cv2。CHAIN_APPROX_TC89_L1或cv2。CHAIN_APPROX_TC89_KCOS应用Teh-Chin链近似算法代码:
import cv2 import numpy  as np 时间=img cv2.imread (& # 39; img.jpg& # 39;) 时间=imgray cv2.cvtColor (img, cv2.COLOR_BGR2GRAY) ret, thresh =, cv2.threshold (imgray,, 127,, 255,, 0) im2,轮廓,hierarchy =, cv2.findContours(打,cv2.RETR_TREE,, cv2.CHAIN_APPROX_SIMPLE)
绘制轮廓
<代码> cv2。drawContours(形象、轮廓、contourIdx、颜色、厚度(,线型[、层次结构(,maxLevel[,抵消]]]]])代码>
- <李>
图片:原图像
李> <李>轮廓:作为Python列表传递的轮廓
李> <李>contourIdx:轮廓索引(在绘制单个轮廓时很有用。绘制所有轮廓,传递1)
李>要绘制图像中的所有轮廓:
<代码> cv.drawContours (img,轮廓,1,(0255 0),3)代码>
要绘制单个轮廓,比如第4个轮廓:
<代码>简历。drawContours (img,轮廓3(0255 0),3)代码>
但大多数情况下,绘制第4个轮廓,以下方法将非常有用:
<代码>问=轮廓[4]代码>
<代码>简历。drawContours (img,[问]0(0255 0),3)代码>
代码:
import cv2 import numpy  as np 时间=img cv2.imread (& # 39; img7.png& # 39;) 时间=imgray cv2.cvtColor (img, cv2.COLOR_BGR2GRAY) ret, thresh =, cv2.threshold (imgray,, 127,, 255,, 0) im2,轮廓,hierarchy =, cv2.findContours(打,cv2.RETR_TREE,, cv2.CHAIN_APPROX_SIMPLE) cnt [0]=,轮廓 cv2.drawContours (img,[问]0 (0255 0),3) cv2.imshow (& # 39; src # 39;, img) cv2.waitKey ()
感谢你能够认真阅读完这篇文章,希望小编分享的“opencv python图像轮廓/检测轮廓/绘制轮廓的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!