cv2.findContours()返回函数详解, findContours()

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

下面就进行详细介绍,为了能够使读者更加深入的理解,利用下面的例程进行具体分析。

准备材料:图片一张(作者手动画图软件绘制的)


Python程序如下:

improve cv2
improve numpy as np
img=cv2.imread('test.jpg')
imgray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh=cv2.thrshold(imgray,127,255,0)
image,cnts,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.imshow('imageshow',image)  # 显示返回值image,其实与输入参数的thresh原图没啥区别
cv2.waitKey()
print(np.size(cnts))  #   得到该图中总的轮廓数量
print(cnts[0])   #  打印出第一个轮廓的所有点的坐标, 更改此处的0,为0--(总轮廓数-1),可打印出相应轮廓所有点的坐标
print(hierarchy) #打印出相应轮廓之间的关系
img=cv2.drawCountours(img,[cnts
`cv2.findContours` 是 OpenCV 库中用于查找图像中轮廓的函数。它的详细用法如下: ```python contours, hierarchy = cv2.findContours(image, mode, method, offset) ``` 参数解释: - `image`:输入图像,通常为二值图像(黑白图像)。 - `mode`:轮廓检索模式,指定轮廓的层次结构。常用的模式有: - `cv2.RETR_EXTERNAL`:只检测最外层的轮廓。 - `cv2.RETR_LIST`:检测所有轮廓,不建立层次结构。 - `cv2.RETR_CCOMP`:检测所有轮廓,并将其组织为两层的层次结构。 - `cv2.RETR_TREE`:检测所有轮廓,并完整地重构它们的层次结构。 - `method`:轮廓的逼近方法。常用的方法有: - `cv2.CHAIN_APPROX_NONE`:保存所有的轮廓点。 - `cv2.CHAIN_APPROX_SIMPLE`:仅保存轮廓的端点。 - `cv2.CHAIN_APPROX_TC89_L1` 和 `cv2.CHAIN_APPROX_TC89_KCOS`:应用 Teh-Chin 链逼近算法中的一种。 - `offset`:可选参数,用于指定轮廓点相对于原始图像中的偏移量。 返回值解释: - `contours`:检测到的轮廓,每个轮廓由一系列点组成的数组表示。 - `hierarchy`:轮廓的层次结构信息,可以用于分析轮廓之间的关系。 关于数学函数方面,`cv2.findContours` 函数主要使用了图像处理和几何学的相关算法,例如边缘检测、二值化、连通组件分析等。这些算法涉及到数学中的图像处理、几何运算、向量计算等概念和方法,但具体的数学细节超出了本回答的范围。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值