首页 > 后端开发 > C++ > OpenCV如何优化才能准确检测一张纸的四个角?

OpenCV如何优化才能准确检测一张纸的四个角?

Susan Sarandon
发布: 2024-12-24 11:22:10
原创
527 人浏览过

How Can OpenCV Be Optimized to Accurately Detect the Four Corners of a Sheet of Paper?

使用 OpenCV 检测一张纸(正方形检测)

初始问题:

开发人员成功实现了 OpenCV 方形检测示例,但输出中充满了不必要的轮廓。目标是过滤结果以获得一张纸的四个角点以进行进一步处理。

建议的解决方案:

提供的代码片段使用以下方法检测正方形多个阈值级别并使用扩张消除边缘段之间的潜在空洞。然而,它并没有过滤掉杂乱。要解决此问题,请修改 find_squares 函数,如下所示:

void find_squares(Mat&amp; image, vector<vector<Point> >&amp; squares)
{
    ... [code as before] ...

    // Filter out unnecessary contours and store the largest square
    vector<Point> largestSquare;
    double maxArea = 0;

    for (auto& square : squares)
    {
        double area = fabs(contourArea(Mat(square)));
        if (area > maxArea)
        {
            maxArea = area;
            largestSquare = square;
        }
    }

    squares.clear(); // Clear existing squares vector
    squares.push_back(largestSquare); // Store the largest square
}
登录后复制

最终输出:

应用此修改后,生成的向量正方形将仅包含四个检测到的纸张的角点作为图像中最大的正方形。然后,这可以用于减少倾斜或进一步的图像处理任务。

以上是OpenCV如何优化才能准确检测一张纸的四个角?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板