cv2.findContours、cv2.drawContours

news/2024/11/14 18:15:05/

        cv2.findContours()是非常常用的方法,在文字检测例如dbnet的后处理中,通常预测产生的概率图或者二值图要产生检测的边界,通常使用findContours方法找出边界在还原,除此之外一些对边缘的监督学习制作的标签也往往使用findContours方法。这个方法也有个缺点就是速度很慢,如果一次检测的二值图有很多的话,每个二值化都要找所有的边界点的话会很慢,虽然可以控制是否存储所有点,但是找的过程是针对所有点而言的。


void cv::findContours	(	InputArray 	image,
OutputArrayOfArrays 	contours,
int 	mode,
int 	method,
Point 	offset = Point() 
)		
Python:
cv.findContours(	image, mode, method[, contours[, hierarchy[, offset]]]	) ->	contours, hierarchy

下面是第三个参数的解释,这里注意到第二个参数是轮廓检索模式,这和返回的hierarchy相关。通常来说,有四种,RETR_LIST,它只是提取所有的轮廓,而不去建立任何父子关系,所有的轮廓属于同一级。RETR_EXTERNAL,它只会返回最外边的轮廓,所有的子轮廓都会被忽略掉。RETR_CCOMP,这种模式下会返回所有的轮廓并将轮廓分为量级组织结果。RETR_TREE,返回所有的轮廓,并且创建一个完整的组织结构列表,这是最完整的一个模式。

opencv-python 4.0中,返回值只有两个了,一个是contours,一个是hierarchy。

cv2.drawContours()若第三个参数选择-1为绘制所有的轮廓,但是只绘制单个轮廓时,通常会采用,其中4是第四个,通常会对返回的contours做一个循环清洗,然后在一一绘制。

cnt = contours[4]
cv.drawContours(img, [cnt], 0, (0,255,0), 3)for box, area_box in zip(region, area):cv2.drawContours(img, [box], 0, (0, 255, 0), 2)cv2.namedWindow("img", cv2.WINDOW_NORMAL)cv2.imshow("img", img)cv2.imwrite("contours.png", img)cv2.waitKey(0)cv2.destroyAllWindows()
In [41]: img = cv2.imread(r'C:\Users\Desktop\car.jpg')
In [44]: imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)...: ret,thresh = cv2.threshold(imgray,127,255,0)...: contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)In [45]: cv2.drawContours(img,contours,-1,(0,255,0),3)In [46]: cv2.imshow('img',img)


http://www.ppmy.cn/news/325387.html

相关文章

python cv2.findContours参数测试

findContours是连通域处理中最常用的函数之一,顾名思义,是实现图像中连通域的查找定位。结合cv2.drawContours/cv2.contourArea/cv2.boundingRect/cv2.minAreaRect等函数可以实现连通域轮廓的描绘,面积计算,外接四边形和最小外接四…

pyhton opencv中cv2.findContours与cv2.drawContours

最近在做关于图像识别的东西,用到了寻找轮廓函数cv2.findContours和绘制轮廓函数cv2.drawContours 先看看cv2.findContours的定义: 如果嫌啰嗦(不想看英语),直接下拉,下面我有写用法与总结 def findContou…

cv2.drawContours()、cv2.findContours()、cv2.boundingRect(img)函数用法解析

cv2.drawContours()函数的功能是绘制轮廓,输入变量如下: cv2.drawContours(image, contours, contourIdx, color, thicknessNone, lineTypeNone, hierarchyNone, maxLevelNone, offsetNone) 第一个参数image表示目标图像, 第二个参数contour…

绘制轮廓 cv2.findContours函数及参数解释

cv2 绘制轮廓 cv2.findContours()注意事项mode参数method参数offset:(可选参数)返回值 cv2.findContours() def findContours(image, mode, method, contoursNone, hierarchyNone, offsetNone): # real signature unknown; restored from __doc__"…

opencv:图像轮廓检测 cv2.findContours() 与 cv2.drawContours()

1 cv2.findContours() OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。 cv2.findContours(image, mode, method, contoursNone, hierarchyNone, offsetNone)参数描述返回image寻找轮廓的图像,注意输入的图片必须为二值图片。若输入的图片为…

cv2.findContours()返回函数详解

对于cv2.findContours() 函数,相信很多人都在使用,利用其进行轮廓的寻找,之后利用cnt[num],对第num个轮廓进行操作,但是该函数返回的三个参数具体表示的是什么呢? 下面就进行详细介绍,为了能够…

OpenCv查找轮廓-cv2.findContours()函数

contours, hier cv2.findContours(img,mode,method) 参数: 1. img: 要寻找轮廓的图像 2. mode:轮廓的检索模式(四种) 1.cv2.RETR_EXTERNAL 表示只检测外轮廓 2.cv2.RETR_LIST 检测的轮廓不建立等级关系 3.cv2.RETR_CCOMP 建立两个等级的轮…

图像轮廓检索函数cv2.findContours

findContours findContours函数主要作用是从二值图中检索轮廓。 用法 import cv2cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])参数 image:8-bit单通道图像。该图像会将非0像素值视为1,0像素值视为0,因此也…