如何使用OpenCV Python近似图像中的轮廓形状?
函数 cv2.approxPolyDP() 将轮廓形状近似为另一个顶点更少的形状。接受以下参数−
- cnt − 轮廓点的数组。
-
epsilon − 轮廓到近似轮廓的最大距离。需要明智选择epsilon以获得正确的输出。
语法
以下语法可用于近似轮廓形状
步骤
您可以使用以下步骤来近似图像中的轮廓形状 −
导入所需库。在以下所有Python示例中,所需的Python库是 OpenCV 。确保您已经安装了它。
使用 cv2.imread() 读取输入图像,并将其转换为灰度。
对灰度图像应用阈值,以创建二进制图像。调整第二个参数以获得更好的轮廓检测。
使用 cv2.findContours() 函数在图像中找到轮廓。
从轮廓列表中选择轮廓(假设第一个轮廓) cnt 。
定义精度, epsilon 。这一步非常重要。轮廓的正确近似取决于epsilon的选择。
使用 cv2.approxPolyDP() 函数计算近似轮廓点。
使用不同颜色在输入图像上绘制两个轮廓和近似轮廓。
显示带有绘制的轮廓和近似轮廓的图像。
示例
在下面的Python代码中,我们发现输入图像中对象的近似轮廓。我们还在输入图像上绘制了近似轮廓。
我们将使用以下图像作为 输入文件 在上面的程序代码中。
输出
当你执行上面的代码时,它会产生以下 输出 。
然后我们得到以下窗口,显示了 输出 −
在上面的输出图像中,对象的轮廓以黄色显示,对象的近似轮廓以红色显示。请注意两个轮廓之间的差异。