opencv 9 -- 轮廓 近似方法

本文详细解释了OpenCV中轮廓检测函数cv2.findContours()的第三个参数的作用。此参数用于指定轮廓近似方法,如cv2.CHAIN_APPROX_NONE表示保存所有边界点,而cv2.CHAIN_APPROX_SIMPLE则通过去除冗余点简化轮廓。文章对比了两种方法在直线轮廓检测中的应用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是函数 cv2.findCountours() 的第三个参数。它到底代表什么意思呢?

轮廓是一个形状具有相同灰度值的边界。
它会存贮形状边界上所有的 (x,y) 坐标。
但是需要将所有的这些边界点都存储吗?
这就是这 个参数要告诉函数 cv2.findContours 的

这个参数如果被设置为 cv2.CHAIN_APPROX_NONE,所有的边界点都会被存储。
但是我们真的需要这么多点吗?例如,当我们找的边界是一条直线时。
你用需要直线上所有的点来表示直线吗?不是的,我们只需要这条直线的两个端点而已。

这就是 cv2.CHAIN_APPROX_SIMPLE 要做的
它会将轮廓上的冗余点都去掉,压缩轮廓,从而节省内存开支

使用 cv2.CHAIN_APPROX_SIMPLE 的结果,一般只有 4 个点
这里写图片描述

左边是用cv2.CHAIN_APPROX_NONE,
右边是用 cv2.CHAIN_APPROX_SIMPLE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值