OpenCV轮廓的一些函数

文章目录

  • 前言
  • 一、cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])
  • 二、cv2.threshold(src, thresh, maxval, type[, dst])
  • 三、cv2.getStructuringElement(, )
  • 四、cv2.dilate()和cv2.erode()
  • 五、cv2.findContours()
  • 六、cv2.drawContours()
  • 七、cv2.boundingRect(cnt)


前言

opencv在轮廓方面用到的一些函数


一、cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])

image为照片,threshold1为阈值一,threshold2为阈值二。
我感觉他的原理应该就是根据梯度和两个阈值比较,来求边缘线。
如果这个像素点的梯度大于threshold2,那就认为他是边缘线的一部分;
如果小于threshold1就不是边界的一部分;
如果介于两只之间则暂时保留,看有没有用。
他会返回数组。

二、cv2.threshold(src, thresh, maxval, type[, dst])

src:表示的是图片源;
thresh:表示的是阈值(起始值);
maxval:表示的是最大值
type:表示的是这里划分的时候使用的是什么类型的算法
这是一个二值计算,如果咱们数组中的数大于thresh那么就让他等于maxval,如果小于thresh,那么就让他等于0.
他会返回两个值,一个是thresh,就是咱们输入的阈值,还有救是数组了。

三、cv2.getStructuringElement(, )

这个返回的一个矩阵,第一个输入参数是矩阵的类型,第二个是大小

四、cv2.dilate()和cv2.erode()

cv2.dilate()是膨胀用的
cv2.erode()是收缩用的

cv2.erode(src, # 输入图像
kernel, # 卷积核
dst=None,
anchor=None #锚的位置,其有默认值(-1,-1),表示锚位于中心
iterations=None, # 迭代次数,默认1
borderType=None,
borderValue=None)

膨胀
cv2.dilate(src, # 输入图像
kernel, # 卷积核
dst=None,
anchor=None,
iterations=None, # 迭代次数,默认1
borderType=None,
borderValue=None)

五、cv2.findContours()

这个是用来寻找边缘的。
返回两个值:contours:hierarchy
contours 包括找到的所有边框

六、cv2.drawContours()

这个是绘制边界的
cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset ]]]]])
第一个参数是指明在哪幅图像上绘制轮廓;
第二个参数是上面检测出来的轮廓list的名字。
第三个参数指定绘制轮廓list中的哪条轮廓,如果是-1,则绘制其中的所有轮廓。
后面的参数很简单。其中thickness表明轮廓线的宽度,如果是-1(cv2.FILLED),则为填充模式。

七、cv2.boundingRect(cnt)

这个函数很简单,cnt是一个轮廓点集合,也就是它的参数,可以通过cv2.findContours获取;

返回四个值,分别是x,y,w,h;

x,y是矩阵左上点的坐标,w,h是矩阵的宽和高

你可能感兴趣的:(笔记,opencv,计算机视觉,图像处理)