1.凸包
凸包是把轮廓上最少的点连接成一个多边形,是这个多边形把轮廓本身给圈进去
2.API
#对轮廓进行凸包
#参数:第一个为轮廓,第二个为顺逆时针
hull = cv2.convexHull(contours[0],clockwise=True)
3.完整代码
import cv2
import numpy as np
img = cv2.imread("image/hand.png")
#改成灰度图
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#改成二值图
ret,det = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)
#进行轮廓的提取
contours,hi = cv2.findContours(det,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
#绘制轮廓
img_copy = img.copy()
cv2.drawContours(img_copy,contours,0,(0,0,255),2)
#对轮廓进行凸包
#参数:第一个为轮廓,第二个为顺逆时针
hull = cv2.convexHull(contours[0],clockwise=True)
#绘制凸包轮廓
cv2.drawContours(img_copy,[hull],0,(0,255,0),2)
cv2.imshow("show",img_copy)
cv2.waitKey(0)
cv2.destroyAllWindows()