zoukankan      html  css  js  c++  java
  • opencv 多边形近似物体形状 cv.approxPolyDP函数的应用

    前面我们学习过最小外接矩和最小外接圆,那么可以用一个最小的多边形包围物体吗?当然可以:
    其中 cv.approxPolyDP() 的参数1是源图像的某个轮廓;参数2(epsilon)是一个距离值,表示多边形的轮廓接近实际轮廓的程度,值越小,越精确;参数3表示是否闭合。

    import cv2 as cv
    import numpy as np
    
    # 多边形逼近
    # 1.先找到轮廓
    img = cv.imread('unregular.jpg', 0)
    _, thresh = cv.threshold(img, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
    contours, hierarchy = cv.findContours(thresh, 3, 2)
    cnt = contours[0]
    
    # 2.进行多边形逼近,得到多边形的角点
    approx1 = cv.approxPolyDP(cnt, 3, True)
    approx2 = cv.approxPolyDP(cnt, 15, True)
    approx3 = cv.approxPolyDP(cnt, 75, True)
    
    # 3.画出多边形
    image = cv.cvtColor(img, cv.COLOR_GRAY2BGR)
    cv.polylines(image, [approx1], True, (255, 0, 0), 2)
    cv.polylines(image, [approx2], True, (0, 255, 0), 2)
    cv.polylines(image, [approx3], True, (0, 0, 255), 2)
    
    print(len(approx1),len(approx2),len(approx3))  # 角点的个数
    cv.imshow('approxPloyDP', image)
    cv.waitKey(0)
    cv.destroyAllWindows()
    

    实验用图
    实验绘制图像输出
    实验控制台输出
    可以看到,cv.approxPolyDP 函数 参数2(epsilon)越小,得到的多边形角点越多,对原图像的多边形近似效果越好。

  • 相关阅读:
    C#扩展方法
    asp.net mvc获取http body中的json
    ASP.NET MVC 获取表单数据
    @Html.DropDownList()的四种用法及自定义DropDownList扩展

    MVC5+EF6入门完整教程6:Partial View
    Day3.13组件切换
    Day3.12组件中的data和methods
    Day3.11定义私有组件
    Day3.10组件定义方式三
  • 原文地址:https://www.cnblogs.com/wojianxin/p/12610631.html
Copyright © 2011-2022 走看看