OpenCV findContours 函数详解:轮廓提取与处理
该代码段使用 OpenCV 库的 findContours 函数来查找位图中的轮廓。findContours 函数的第一个参数是输入图像,第二个参数是轮廓的检索模式,第三个参数是轮廓逼近方法。该函数返回一个包含三个元素的元组(OpenCV 旧版本可能只返回两个元素),其中第一个元素是输入图像,第二个元素是轮廓列表,第三个元素是层次结构。
代码首先将位图数据乘以 255 并转换为 uint8 类型,以确保图像数据类型与 findContours 函数兼容。
然后,代码检查返回元组的长度,并根据需要选择正确的元素来获取轮廓列表。
- 如果元组长度为 3,则将第一个元素赋值给 img 变量,第二个元素赋值给 contours 变量,第三个元素赋值给 _ 变量。
- 如果元组长度为 2,则将第一个元素赋值给 contours 变量,第二个元素赋值给 _ 变量。
最终,轮廓列表将存储在变量 contours 中,可以用于后续的图像处理操作。
代码示例:
outs = cv2.findContours((bitmap * 255).astype(np.uint8), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
if len(outs) == 3:
img, contours, _ = outs[0], outs[1], outs[2]
elif len(outs) == 2:
contours, _ = outs[0], outs[1]
原文地址: https://www.cveoy.top/t/topic/mQ7l 著作权归作者所有。请勿转载和采集!