对于find contour提取到的轮廓,怎么确保轮廓一定是密闭的,并对应的面积值输出,python代码
时间: 2024-05-04 09:16:10 浏览: 126
ASM主动形状模型,实现轮廓提取有一定的帮助(ASM active shape model, contour_ASM_提取_轮
下面是对于find contour提取到的轮廓,确保轮廓一定是密闭的,并对应的面积值输出的Python代码:
```
import cv2
# 读取图像
img = cv2.imread("image.jpg")
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 遍历每个轮廓
for i in range(len(contours)):
# 判断轮廓是否闭合,如果不闭合则跳过
if not cv2.isContourConvex(contours[i]):
continue
# 计算轮廓面积
area = cv2.contourArea(contours[i])
# 输出轮廓面积
print("Contour Area:", area)
```
这段代码首先读取图像,然后将其转为灰度图像并进行二值化处理。接着使用cv2.findContours()函数查找图像中的轮廓,并遍历每个轮廓。对于每个轮廓,使用cv2.isContourConvex()函数判断其是否闭合,如果不闭合则跳过。如果轮廓是闭合的,则使用cv2.contourArea()函数计算轮廓面积,并输出面积值。这样就可以确保每个轮廓都是闭合的,并得到对应的面积值了。
阅读全文