OpenCV——凸轮廓与Douglas-Peucker算法
发布日期:2021-07-01 04:08:42 浏览次数:2 分类:技术文章

本文共 953 字,大约阅读时间需要 3 分钟。

对下面这张图像,计算其近似多边形和凸包。

  • hammer.jpg

在这里插入图片描述

  • 使用cv2.approxPolyDP()函数计算其近似多边形,其参数列表:

    • 第一个参数为源轮廓。
    • 第二个参数为ε值,它表示源轮廓与近似多边形周长的最大差值(这个值越小,近似多边形与源轮廓越接近)。
    • 第三个参数为布尔标记,它表示这个多边形是否闭合。
  • 使用cv2.convexHull()函数计算其凸包。

  • 源代码

import cv2import numpy as npimg = cv2.pyrDown(cv2.imread("hammer.jpg", cv2.IMREAD_UNCHANGED))ret, thresh = cv2.threshold(cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY), 127, 255, cv2.THRESH_BINARY)black = cv2.cvtColor(np.zeros((img.shape[1], img.shape[0]), dtype=np.uint8), cv2.COLOR_GRAY2BGR)image, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for cnt in contours:    epsilon = 0.01 * cv2.arcLength(cnt, True)    approx = cv2.approxPolyDP(cnt, epsilon, True)    hull = cv2.convexHull(cnt)    cv2.drawContours(black, [cnt], -1, (0, 255, 0), 2)    cv2.drawContours(black, [approx], -1, (255, 255, 0), 2)    cv2.drawContours(black, [hull], -1, (0, 0, 255), 2)cv2.imshow("hull", black)cv2.waitKey()cv2.destroyAllWindows()
  • hull

在这里插入图片描述


转载地址:https://mortal.blog.csdn.net/article/details/82944149 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:OpenCV——直线检测
下一篇:OpenCV——边界框、最小矩形区域和最小闭圆的轮廓

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月30日 14时40分34秒