《Opencv计算机视觉实战》笔记_7:图像轮廓

图像轮廓

检测轮廓

cv2.findContours(image, mode, method)有两个返回值:contours(所有轮廓信息(list结构))和hierarchy(层级)

mode——轮廓检测模式

  • RETR_EXTERNAL :只检索最外面的轮廓;
  • RETR_LIST:检索所有的轮廓,并将其保存到一条链表当中;
  • RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界;
  • RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次。

method——轮廓逼近方法

  • CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点的序列);
  • CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分。

绘制轮廓

cv2.drawContours(image, contours, contourIdx, color[, thickness])
  • image(若传入原始图像,会就地绘制轮廓,所以最好先建立一个副本并传入)
  • contours:所有输入轮廓
  • contourIdx:想要绘制的轮廓的索引(如果是负数则绘制所有轮廓)
  • color:绘制的轮廓的颜色
  • thickness:绘制的轮廓的粗细(如果是负数则填充)

轮廓特征

cv2.contourArea(contour) 计算轮廓面积
cv2.arcLength(curve, closed) 计算轮廓周长
  • curse:表示输入的点集
  • closed=True 闭合

轮廓近似

cv2.approxPolyDP(curve, epsilon, closed)
  • curse:表示输入的点集
  • epsilon:一般是轮廓周长乘以0~1的数(epsilon越小,则越近似原始轮廓)
  • closed:当closed=True表示封闭的

边界

  • 矩形
    cv2.boundingRect() 获取矩形边界信息
    cv2.rectangle(img, pt1, pt2, color[, thickness]) 绘制矩形边界
    • pt1:左上角点的坐标
    • pt2:右下角点的坐标
  • 圆形
    cv2.minEnclosingCircle() 获取圆形边界信息(有两个返回值:center(圆心)和radius(半径))
    cv2.circle(img, center, radius, color[, thickness]) 绘制圆形边界

你可能感兴趣的:(Opencv计算机视觉实战,计算机视觉,opencv,python)