美文网首页
轮廓特征

轮廓特征

作者: 大龙10 | 来源:发表于2023-09-11 13:00 被阅读0次

    图像轮廓是指由位于边缘、连续的、具有相同颜色和强度的点构成的曲线,它可以用于形状分析以及对象检测和识别。

    • 一、轮廓的矩
    • 二、轮廓的面积
    • 三、轮廓的长度
    • 四、轮廓的近似多边形
    • 五、轮廓的凸包
    • 六、轮廓的直边界矩形
    • 七、轮廓的旋转矩形
    • 八、轮廓的最小外包圆
    • 九、轮廓的拟合椭圆
    • 十、轮廓的拟合直线
    • 十一、轮廓的最小外包三角形

    一、轮廓的矩

    • 轮廓的矩包含了轮廓的各种几何特征,如面积、位置、角度、形状等。
    • cv2.moments()函数用于返回轮廓的矩,其基本格式如下:
      ret = cv2.moments(array[, binaryImage])
      ret为返回的轮廓的矩,是一个字典对象, 大多数矩的含义比较抽象, 但其中的零阶矩(m00)表示轮廓的面积
      array为表示轮廓的数组
      binaryImage值为True时,会将array对象中的所有非0值设置为1
    img1 = np.zeros(o.shape, np.uint8) + 255
    img1 = cv2.drawContours(img1, contours, -1,(0,255,0),2)
    cv2.imshow('Contours',img1)
    
    m0 = cv2.moments(contours[0])
    print('轮廓0的矩:', m0)
    print('轮廓0的面积:', m0['m00'])
    
    

    二、轮廓的面积

    • cv2.contourArea()函数用于返回轮廓的面积
    • 其基本格式如下
      ret = cv2.contourArea(contour[, oriented])
      ret为返回的面积
      contour为轮廓
      oriented为可选参数, 其参数值为True时, 返回值的正与负表示表示轮廓是顺时针还是逆时针
      参数值为False(默认值)时, 函数返回值为绝对值

    三、轮廓的长度

    • cv2.arcLength()函数用于返回轮廓的长度
    • 其基本格式如下
      ret = cv2.cv2.arcLength(contour, closed)
      ret为返回的长度
      contour为轮廓
      closed为布尔值, 为True时表示轮廓是封闭的

    四、轮廓的近似多边形

    • cv2.approxPolyDP()函数用于返回轮廓的近似多边形
    • 其基本格式如下:
      ret = cv2.cv2.arcLength(contour, epsilon, closed)
      ret为返回的近似多边形
      contour为轮廓
      epsilon为精度, 表示近似多边形接近轮廓的最大距离
      closed为布尔值, 为True时表示轮廓是封闭的
    arcl = cv2.arcLength(contours[0], True)
    img2 = o.copy()
    app = cv2.approxPolyDP(contours[0], arcl*0.05, True)
    img2 = cv2.drawContours(img2, [app], -1, (255,0,0), 2)
    cv2.imshow('contours',img2)
    
    

    五、轮廓的凸包

    • cv2.convexHull()函数用于返回轮廓的凸包
    • 其基本格式如下
      hull = cv2.convexHull(contours[, clockwise[, returnPointss]])
      hull为返回的凸包, 是一个numpy.ndarray对象, 包含了凸包的关键点
      contours为轮廓
      clockwise为方向标记, 为True时, 凸包为顺时针方向, 为False(默认值)时, 凸包为逆时针方向
      returnPointss为True时(默认值)时, 返回的hull中包含的是凸包关键点的坐标, 为False时, 返回的是凸包关键点在轮廓中的索引
    hull = cv2.convexHull(contours[0])
    print('returnPoints = Treu 时返回的凸包;\n',hull)
    
    hull2 = cv2.convexHull(contours[0], returnPoints=False)
    print('returnPoints = False时返回的凸包;\n',hull2)
    
    cv2.polylines(o, [hull], True, (0,0,255),2)
    cv2.imshow('ConvecHull',o)
    
    

    六、资料

    「机器视觉小学徒」的博客:
    https://blog.csdn.net/weixin_43843069/article/details/122039788
    

    相关文章

      网友评论

          本文标题:轮廓特征

          本文链接:https://www.haomeiwen.com/subject/fodsvdtx.html