cv2.findcontours轮廓内外
时间: 2023-10-08 09:12:46 浏览: 51
cv2.findContours函数可以用来获取图像中的轮廓信息。这个函数的第一个返回值是轮廓的列表,第二个返回值是轮廓的层次结构。在这个函数中,通过调整第二个参数cv2.RETR_EXTERNAL和cv2.RETR_LIST可以选择获取轮廓的方式。当使用cv2.RETR_EXTERNAL参数时,函数只返回最外层的轮廓,而使用cv2.RETR_LIST参数时,函数返回所有的轮廓。因此,cv2.RETR_EXTERNAL返回的是轮廓的内部,cv2.RETR_LIST返回的是轮廓的内外都有。
相关问题
cv2.findContours轮廓排序
cv2.findContours函数可以用于检测图像中的轮廓。在检测到轮廓后,可以使用cv2.contourArea函数计算轮廓的面积,并使用sorted函数对轮廓进行排序。默认情况下,sorted函数按照轮廓的面积从小到大排序,如果需要按照面积从大到小排序,则需要将reverse参数设置为True。例如,在灰度化、边缘检测和轮廓检测后,可以使用以下代码对轮廓进行排序并取出面积最大的前5个轮廓:
contours, hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=cv2.contourArea, reverse=True)[:5]
cv2.findcontours轮廓提取的原理
cv2.findContours是OpenCV中用于轮廓提取的函数,其原理如下:
1. 首先,它将输入的图像进行二值化处理,将图像中的像素值分为两类:前景和背景。其中,前景通常是我们要提取轮廓的对象,背景则是其它部分。
2. 接着,它在二值化后的图像中查找所有连通的像素点集合,这些像素点集合就是我们所谓的轮廓。
3. 在找到轮廓之后,它可以对其进行进一步的处理,例如计算轮廓的面积、周长、形心等。
需要注意的是,cv2.findContours函数会修改输入的原始图像,因此在使用该函数时需要注意备份原始图像。同时,为了确保轮廓的正确提取,输入的图像应该是二值化的,且前景部分尽量为白色,背景部分尽量为黑色。