for contour in contours:
area = cv2.contourArea(contour) print(f"Contour area: {area}")
4. cv2.arcLength()
功能描述:
该函数用于计算轮廓的周长或弧长。
函数定义:
length = cv2.arcLength(curve, closed)
参数说明:
curve: 输入的轮廓点集。
closed: 布尔值,表示轮廓是否闭合。
返回值:
轮廓的周长或弧长。
实例
for contour in contours:
perimeter = cv2.arcLength(contour,True) print(f"Contour perimeter: {perimeter}")
5. cv2.boundingRect()
功能描述:
该函数用于计算轮廓的边界矩形。
函数定义:
x, y, w, h = cv2.boundingRect(points)
参数说明:
points: 输入的轮廓点集。
返回值:
边界矩形的左上角坐标 (x, y) 和宽度 w、高度 h。
实例
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(image,(x, y),(x + w, y + h),(0,255,0),2)
cv2.imshow('Bounding Rectangles', image)
cv2.waitKey(0)
6. cv2.minAreaRect()
功能描述:
该函数用于计算轮廓的最小外接矩形(旋转矩形)。
函数定义:
rect = cv2.minAreaRect(points)
参数说明:
points: 输入的轮廓点集。
返回值:
返回一个旋转矩形,包含中心点 (x, y)、宽度、高度和旋转角度。
实例
for contour in contours:
rect = cv2.minAreaRect(contour)
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(image,[box],0,(0,0,255),2)
cv2.imshow('Min Area Rectangles', image)
cv2.waitKey(0)
7. cv2.minEnclosingCircle()
功能描述:
该函数用于计算轮廓的最小外接圆。
函数定义:
(center, radius)= cv2.minEnclosingCircle(points)
参数说明:
points: 输入的轮廓点集。
返回值:
返回圆心 (x, y) 和半径 radius。
实例
for contour in contours: (x, y), radius = cv2.minEnclosingCircle(contour)
center =(int(x),int(y))
radius =int(radius)
cv2.circle(image, center, radius,(255,0,0),2)
cv2.imshow('Min Enclosing Circles', image)
cv2.waitKey(0)
8. cv2.approxPolyDP()
功能描述:
该函数用于对轮廓进行多边形近似。
函数定义:
approx = cv2.approxPolyDP(curve, epsilon, closed)
参数说明:
curve: 输入的轮廓点集。
epsilon: 近似精度,值越小,近似越精确。
closed: 布尔值,表示轮廓是否闭合。
返回值:
返回近似后的多边形点集。
实例
for contour in contours:
epsilon =0.01 * cv2.arcLength(contour,True)
approx = cv2.approxPolyDP(contour, epsilon,True)
cv2.drawContours(image,[approx],0,(0,255,0),2)
cv2.imshow('Approx Polygons', image)
cv2.waitKey(0)