opencv3-第3章-轮廓 凸轮廓 近似多边形轮廓

本文深入讲解了OpenCV3中关于轮廓的处理,重点探讨了如何识别和处理凸形状,包括如何确保两点连线完全位于形状内部,并介绍了将复杂轮廓近似为多边形的方法。
摘要由CSDN通过智能技术生成

凸形状内部的任意两点的连线都在该形状里。

import cv2
import numpy as np

img = 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, hier = 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, 0, 0), 2)  #近似多边形轮廓  蓝色
  cv2.drawContours(black, [hull], -1, (0, 0, 255), 2)   # 凸轮廓  红色

cv2.imshow("hull", black)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值