for cnt in contours: area = cv.contourArea(cnt) arclength = cv.arcLength(cnt, True) print('area=%.2f, arcLength=%.2f' % (area, arclength)) print('轮廓个数', len(contours))什么意思
时间: 2024-04-03 21:36:40 浏览: 14
这段代码是用于计算轮廓的面积和周长,并输出每个轮廓的面积和周长以及轮廓的个数。其中,contours是之前通过cv.findContours()函数检测到的轮廓列表。
for cnt in contours: # 对于每一个轮廓
area = cv.contourArea(cnt) # 计算轮廓面积
arclength = cv.arcLength(cnt, True) # 计算轮廓周长
print('area=%.2f, arcLength=%.2f' % (area, arclength)) # 输出面积和周长
上述代码中,通过循环遍历contours,对于每一个轮廓cnt,使用cv.contourArea()函数计算轮廓面积,并使用cv.arcLength()函数计算轮廓周长。最后,使用print()函数输出每个轮廓的面积和周长。
print('轮廓个数', len(contours))
上述代码中,使用len()函数获取轮廓列表contours中轮廓的个数,并使用print()函数输出轮廓的个数。
相关问题
# 寻找轮廓并计算周长 contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for cnt in contours: perimeter = cv2.arcLength(cnt, True) if 500 < perimeter < 600: # 画出矩形框 x, y, w, h = cv2.boundingRect(cnt) cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)把这段改为计算面积来画框
可以将计算周长的部分改为计算轮廓面积,然后根据面积大小来画矩形框。修改后的代码如下:
```
contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
area = cv2.contourArea(cnt)
if 500 < area < 600:
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
```
这里使用了 `cv2.contourArea()` 函数来计算轮廓的面积,然后根据面积大小来判断是否画矩形框。
contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for cnt in contours: perimeter = cv2.arcLength(cnt, True) if perimeter > 500: # 画出矩形框 x, y, w, h = cv2.boundingRect(cnt) cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2把这段改为大于500小于1000
修改后的代码如下:
```
contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
perimeter = cv2.arcLength(cnt, True)
if 500 < perimeter < 1000: # 修改条件为周长大于500小于1000
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
```
这段代码会找出周长大于500小于1000的所有轮廓,并在原始图像frame上画出其包围矩形框。