print('area=%.2f, arcLength=%.2f' % (area, arclength))什么意思
时间: 2023-12-28 07:04:39 浏览: 57
这段代码使用了 Python 中的字符串格式化操作,用于将变量的值插入到字符串中形成新的字符串。其中`'area=%.2f, arcLength=%.2f'`是一个格式化字符串,其中`.2f`表示浮点数保留两位小数。`%`是格式化字符串的分隔符,后面的`(area, arclength)`表示要将这两个变量的值插入到格式化字符串中去。最后生成的新字符串中,`%.2f`会被替换为`area`和`arclength`的实际值。
相关问题
for cnt in contours: area = cv.contourArea(cnt) arclength = cv.arcLength(cnt, True) print('area=%.2f, arcLength=%.2f' % (area, arclength)) print('轮廓个数', len(contours))什么意思
这段代码是用于计算轮廓的面积和周长,并输出每个轮廓的面积和周长以及轮廓的个数。其中,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()函数输出轮廓的个数。
import cv2 as cv img = cv.imread('yb.jpg') gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) #转换为灰度图像 cv.imshow("yb",img) cv.imshow('gray', gray) ret, binary = cv.threshold(gray, 122, 255, cv.THRESH_BINARY_INV) #对灰度图像进行二值化处理 cv.imshow('binary', binary) contours, hierarchy = cv.findContours(binary, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE) #hierarchy是轮廓之间的层级关系 # 对二值化图像进行轮廓检测 print(type(contours)) cv.drawContours(img, contours, -1, (0, 0, 255), 2) # 在原始图像上绘制红色轮廓 cv.imshow('contours', img) for cnt in contours: area = cv.contourArea(cnt) #计算轮廓的面积 arclength = cv.arcLength(cnt, True) #封闭轮廓的周长 print('area=%.2f, arcLength=%.2f' % (area, arclength)) print('轮廓个数', len(contours)) print(type(contours[0])) cv.waitKey(0) cv.destroyAllWindows()为什么这个代码contours属性打印的是list不是tuple
在 OpenCV 3 及以上版本中,`cv2.findContours()` 函数返回的不再是 (contours, hierarchy) 的元组,而是只返回 contours 列表。因此,当你运行这段代码时,`type(contours)` 输出的类型是 list,而不是 tuple。
如果你使用的是 OpenCV 2 版本,则 `cv2.findContours()` 函数返回的是 (contours, hierarchy) 的元组,这时 `type(contours)` 的输出类型是 numpy.ndarray,而不是 list 或 tuple。
阅读全文