opencv approxPolyDP 返回值
时间: 2024-07-13 13:01:24 浏览: 220
在OpenCV库中,`approxPolyDP()` 函数是一个用于简化边界的函数,它通常用于二进制图像轮廓的处理。这个函数的基本原型如下:
```cpp
bool approxPolyDP(vector<Point>& contour, vector<Point>& result, double epsilon, bool closed=true);
```
参数含义如下:
1. `contour`:输入的多边形轮廓点,通常是通过`findContours()`函数获取的。
2. `result`:输出结果,即逼近后的边界点。
3. `epsilon`:指定允许的精度误差,表示原始轮廓和近似轮廓之间的最大距离比例。
4. `closed`:布尔值,如果设置为`true`,则假设轮廓是闭合的;如果不设置或设为`false`,则假设轮廓是开放的。
返回值:
`approxPolyDP()` 函数没有直接的返回值,而是直接修改了`result`参数。如果近似的点数小于3,说明轮廓可能是噪声或者是离散不好的边缘,函数会返回`false`。否则,如果成功近似,函数返回`true`。
相关问题
opencvsharp的ApproxPolyDP的使用示例
以下是一个使用OpenCVSharp中ApproxPolyDP函数的示例代码:
```csharp
using (Mat src = new Mat("input.jpg", ImreadModes.Color))
using (Mat gray = new Mat())
{
Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);
Cv2.Canny(gray, gray, 50, 200);
Point[][] contours;
HierarchyIndex[] hierarchy;
Cv2.FindContours(gray, out contours, out hierarchy, RetrievalModes.List, ContourApproximationModes.ApproxSimple);
for (int i = 0; i < contours.Length; i++)
{
Point[] approxCurve = Cv2.ApproxPolyDP(contours[i], 10, true);
Cv2.DrawContours(src, new Point[][] { approxCurve }, 0, Scalar.Red, 2);
}
Cv2.ImShow("Result", src);
Cv2.WaitKey(0);
}
```
该示例首先加载一张彩色图像,将其转换为灰度图像,并进行Canny边缘检测。接着使用FindContours函数查找灰度图像中的轮廓,并对每个轮廓使用ApproxPolyDP函数进行逼近。最后使用DrawContours函数在原图像上绘制逼近后的轮廓。
在上述代码中,第一个参数contours[i]代表输入轮廓点集,第二个参数10代表逼近精度epsilon,第三个参数true代表轮廓是否封闭(即首尾相连)。函数返回值为一个Point类型的数组,表示逼近后的点集。
approxPolyDP
approxPolyDP是OpenCV中的函数,用于将轮廓近似为具有指定精度的多边形或曲线。它的基本语法如下:
approxPolyDP(curve, approxCurve, epsilon, closed)
其中,curve是输入的轮廓,approxCurve是输出的多边形或曲线,epsilon是指定精度参数,closed是一个布尔值,指定是否闭合该曲线。该函数的返回值为输出多边形或曲线的点集。
阅读全文