OpenCV轮廓17 Mar 2025 | 阅读 2 分钟 轮廓被定义为连接所有连续点(沿着边界)的曲线,这些点具有相同的颜色或强度。 换句话说,我们在二值图像中找到轮廓,我们专注于在二值图像中找到边界。 官方定义如下 轮廓是形状分析、物体检测和识别的有用工具。 为了保持准确性,我们应该使用二值图像。 首先,我们应用阈值或 Canny 边缘检测。 在 OpenCV 中,在二值图像中查找轮廓与从黑色背景中查找白色对象相同。 OpenCV 提供了 findContours(),用于在二值图像中查找轮廓。 语法如下 findContours () 接受三个参数,第一个参数是源图像,第二个是轮廓检索模式,第三个是轮廓近似。 让我们看下面的例子 如何绘制轮廓?OpenCV 提供了 cv2.drawContours() 函数,该函数用于绘制轮廓。 它也可用于通过提供其边界点来绘制任何形状。 cv2.drawContours() 函数的语法如下 要在图像中绘制所有轮廓 要绘制单个轮廓,假设第 3个 轮廓 第一个参数表示图像源,第二个参数表示应作为 Python 列表传递的轮廓,第三个参数用作轮廓的索引,其他参数用于颜色粗细。 轮廓近似方法它是 cv2.findCounter() 中的第三个参数。 上面,我们已经描述了它以相同的强度绘制形状的边界。 它存储形状边界的 (x,y) 坐标。 但是这里出现了一个问题,它是否存储所有坐标? 这由轮廓近似方法指定。 如果我们传递 cv.CHAIN_APPROX_NONE,它将存储所有边界点。 有时不需要存储所有点坐标,假设我们找到了直线的轮廓,其中不需要存储所有轮廓点,只需要存储两个端点。 因此,对于这种情况,我们使用 cv.CHAIN_APPROX_NONE,它会删除所有冗余点并压缩轮廓,从而节省内存。 示例-1 ![]() 在上面的矩形图像中,第一张图像显示了使用 cv.CHAIN_APPROX_NONE(734) 的点,第二张图像显示了使用 cv2.CHAIN_APPROX_SIMPLE(仅 4 个点) 的点。 我们可以看到两张图像之间的差异。 下一个主题OpenCV 鼠标事件 |
我们请求您订阅我们的新闻通讯以获取最新更新。