首頁 > 後端開發 > C++ > OpenCV如何優化才能準確偵測一張紙的四個角落?

OpenCV如何優化才能準確偵測一張紙的四個角落?

Susan Sarandon
發布: 2024-12-24 11:22:10
原創
533 人瀏覽過

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

使用OpenCV 偵測一張紙(方形偵測)

初始問題:

初始問題:

開發人員成功實現了OpenCV 方形檢測範例,但輸出充滿了不必要的輪廓。目標是過濾結果以獲得一張紙的四個角點以進行進一步處理。

建議的解決方案:
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
}
登入後複製

提供的程式碼片段使用以下方法檢測正方形多個閾值等級並使用擴張消除邊緣段之間的潛在空洞。然而,它並沒有過濾掉雜亂。要解決此問題,請修改find​​_squares 函數,如下所示:

最終輸出:套用此修改後,產生的向量方塊將僅包含四個偵測到的紙張的角點作為影像中最大的正方形。然後,這可以用於減少傾斜或進一步的影像處理任務。

以上是OpenCV如何優化才能準確偵測一張紙的四個角落?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板