1、cv2.findContours()
- 对具有黑色背景的二值图像寻找白色区域的轮廓,因此一般都会先经过cvtColor()灰度化和threshold()二值化后的图像作为输入。
cv2.findContous(image, mode, method[, contours[, hierarchy[, offset]]])
''
1) image: 原始输入图像,为8bit的单通道二值图像
2) mode: 轮廓检索模式
cv2.RETR_EXTERNAL: 只检索外部轮廓
cv2.RETR_LIST: 检索所有轮廓,但不建立任何层次关系(即父轮廓和子轮廓)
cv2.RETR_CCOMP: 检索所有轮廓,将其组织为2层,top层为各部分的外层轮廓,第二层为内层轮廓
cv2.RETR_TREE: 检索所有轮廓,并建立嵌套轮廓的层次结构
3) method:轮廓近似方法
cv2.CHAIN_APPROX_NONE: 输出轮廓的每个像素点
cv2.CHAIN_APPROX_SIMPLE: 只保留水平/垂直/斜线的端点
返回值为:
4) contours:检测到的轮廓,为列表list格式:list[ndarray]
该列表的长度为L,表示有L个轮廓(顺序为先外层后内层进行排序)
ndarray的格式为(K, 1, 2), 表示各个轮廓中的K个点的位置(x, y)
5) hierarchy: 轮廓的层次结构,为(1, L, 4)的ndarray
hierarchy[0][i]表示的是第i个轮廓的层次结构:[Next, Previous, First Child, First Parent], 表示
第i个轮廓的同层的后一个轮廓编号、同层的前一个轮廓编号、第一个子轮廓、第一个父轮廓的编号
编号指的是轮廓在contours列表的序号,不存在则置为-1
''
- 例如,如下的轮廓检测出的结果contours和hierarchy。
2、cv2.boundingRect()
- 根据轮廓点检测对应轮廓的外接矩形
cv2.boundingRect(points)
''
points: 为2D的像素点集合,即(K, 1, 2)的ndarray, 一般为cv2.findContours的检测出的轮廓
输出为(x, y, w, h),即左上角的点+矩形的宽高
''
文章来源地址https://www.toymoban.com/news/detail-642924.html
文章来源:https://www.toymoban.com/news/detail-642924.html
到了这里,关于【OpenCV常用函数:轮廓检测+外接矩形检测】cv2.findContours()+cv2.boundingRect()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!