问题描述:
对于contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)和contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE),里面的参数cv2.CHAIN_APPROX_SIMPLE和cv2.CHAIN_APPROX_NONE有什么区别呢?
问题解答:
在 cv2.findContours()
函数中,cv2.CHAIN_APPROX_SIMPLE
和 cv2.CHAIN_APPROX_NONE
是用于轮廓逼近的方法,它们之间的主要区别在于轮廓点的压缩方式:
1. cv2.CHAIN_APPROX_SIMPLE
- 作用:这个方法会压缩轮廓,去除冗余的点,只保留轮廓的端点。
- 结果:例如,一个正方形的轮廓只会返回四个角的点,而不是所有的点。这能显著减少存储的点数,降低计算复杂度。
2. cv2.CHAIN_APPROX_NONE
- 作用:这个方法会保留轮廓的所有点,不进行任何压缩。
- 结果:正方形的轮廓将返回所有的轮廓点,包含每个像素的坐标。这将消耗更多的内存和计算资源。
总结
- 选择
cv2.CHAIN_APPROX_SIMPLE
:当你只需要轮廓的基本形状信息,想节省内存时使用。 - 选择
cv2.CHAIN_APPROX_NONE
:当你需要获取轮廓的精确形状或处理更复杂的轮廓时使用。