国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[C++] opencv - approxPolyDP(多邊形擬合)函數(shù)介紹和使用場景

這篇具有很好參考價值的文章主要介紹了[C++] opencv - approxPolyDP(多邊形擬合)函數(shù)介紹和使用場景。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

approxPolyDP()函數(shù)介紹

OpenCV中的approxPolyDP()函數(shù)用于對形狀進行逼近,以減少多邊形的頂點數(shù),可以用于對圖像輪廓點進行多邊形擬合。

函數(shù)原型如下:

void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed );

其中,

curve是輸入的點集,類型為InputArray,可以是Mat、vector<Point>等;

approxCurve是輸出的點集,類型為OutputArray,也是Mat類型;

epsilon是精度,類型為double;

closed是一個布爾值,表示是否閉合多邊形。

使用場景

在計算機視覺和圖像處理中,approxPolyDP()函數(shù)用于對圖像輪廓點可以進行多邊形擬合,用于檢測和識別形狀。

使用案例

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main()
{
    // 讀取灰度圖像
    Mat src = imread("./simple_chart.png");
    if (src.empty())
    {
        cout << "無法讀取圖像" << endl;
        return -1;
    }
    imshow("原圖", src);
    waitKey(0);

    Mat gray;
    cvtColor(src, gray, COLOR_BGR2GRAY);
    imshow("灰度圖", gray);
    waitKey(0);

    // 二值化圖像
    Mat binary;
    threshold(gray, binary, 50, 255, THRESH_BINARY);
    imshow("二值化圖", binary);
    waitKey(0);

    // 查找輪廓
    vector<vector<Point>> contours;
    vector<Vec4i> hierarchy;
    findContours(binary, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);

    cout << "發(fā)現(xiàn)輪廓的數(shù)量:" << contours.size() << endl;

    // 繪制輪廓
    for (size_t i = 0; i < contours.size(); ++i)
    {
        auto contour = contours[i];
        vector<Point> approx;
        approxPolyDP(contour, approx, arcLength(contour, true) * 0.02, true);

        // 根據(jù)頂點數(shù)量判斷形狀
        // 如果為4,則為矩形或者正方形
        if (approx.size() == 4)
        {
            Rect rect = boundingRect(approx);
            rectangle(src, rect, Scalar(255, 255, 255), 2);
            // 判斷是不是正方形
            if (((rect.width-rect.height)/(double) rect.height) <=0.02){
                cout << "這是正方形" << endl;
            }
        }
        // 如果為3,則為三角形
        else if(approx.size()== 3){
            drawContours(src, contours, i, Scalar(255, 255, 0), 2);
        }
        // 如果其他形狀,比如圓,復雜多邊形等
        else{
            drawContours(src, contours, i, Scalar(255, 0, 255), 2);
        }
    }

    // 顯示結(jié)果
    imshow("輪廓繪制", src);
    waitKey(0);

    return 0;
}

原圖:

opencv approxpolydp,opencv,C++,c++,opencv

?灰度圖:

opencv approxpolydp,opencv,C++,c++,opencv

二值化圖:

opencv approxpolydp,opencv,C++,c++,opencv

?輪廓圖:

opencv approxpolydp,opencv,C++,c++,opencv

結(jié)論

在計算機視覺和圖像處理中,approxPolyDP()函數(shù)用于對圖像輪廓點可以進行多邊形擬合,用于檢測和識別形狀。另外在圖像分割、目標跟蹤和機器人導航等領(lǐng)域,通過減少多邊形的頂點數(shù),可以提高算法的效率和準確性。文章來源地址http://www.zghlxwxcb.cn/news/detail-839680.html

到了這里,關(guān)于[C++] opencv - approxPolyDP(多邊形擬合)函數(shù)介紹和使用場景的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • OpenCV(10): 輪廓近似—多邊形擬合,邊界矩形與邊界圓形

    OpenCV(10): 輪廓近似—多邊形擬合,邊界矩形與邊界圓形

    輪廓近似(Contour Approximation)是指對輪廓進行逼近或擬合,得到近似的輪廓。在圖像處理中,輪廓表示了圖像中物體的邊界,因此輪廓近似可以用來描述和識別物體的形狀。 多邊形擬合(Approximating Polygons)是將輪廓逼近成一個由直線段構(gòu)成的多邊形。常見的有最小包圍矩形

    2024年02月10日
    瀏覽(117)
  • OpenCV(三十四):輪廓外接最大、最小矩形和多邊形擬合

    OpenCV(三十四):輪廓外接最大、最小矩形和多邊形擬合

    目錄 1.輪廓外接最大矩形boundingRect() 2.輪廓外接最小矩形minAreaRect() 3.輪廓外接多邊形approxPolyDP() 1.輪廓外接最大矩形boundingRect() Rect cv::boundingRect ( InputArray array ) array:輸入的灰度圖像或者2D點集,數(shù)據(jù)類型為vectorPoint或者Mat。 示例代碼: ?輪廓外接最大矩形的結(jié)果: 2.輪廓外接

    2024年02月09日
    瀏覽(301)
  • 使用OpenCV的函數(shù)polylines()繪制多條相連的線段和多邊形;使用函數(shù)fillPoly()繪制帶填充效果的多邊形

    使用OpenCV的函數(shù)polylines()繪制多條相連的線段和多邊形;使用函數(shù)fillPoly()繪制帶填充效果的多邊形

    函數(shù)polylines()可用來根據(jù)點集繪制多條相連的線段,也可用來繪制多邊形。 函數(shù)polylines()有兩種原型,這里只向大家介紹比較常用的那種原型。 函數(shù)polylines()的C++原型如下: 函數(shù)polylines()的Python原型如下: 函數(shù)polylines()的參數(shù)意義如下: img—繪制的多條相連線段或多邊形所在

    2024年02月04日
    瀏覽(106)
  • opencv 之 外接多邊形(矩形、圓、三角形、橢圓、多邊形)使用詳解

    opencv 之 外接多邊形(矩形、圓、三角形、橢圓、多邊形)使用詳解

    本文主要講述opencv中的外接多邊形的使用: 多邊形近似 外接矩形、最小外接矩形 最小外接圓 外接三角形 橢圓擬合 凸包 將重點講述最小外接矩形的使用 給一個opencv官方的例程: 過程圖像如下: 橢圓擬合一般用于輪廓提取之后: 凸包繪制 計算兩個旋轉(zhuǎn)矩形交集: C++版的最

    2024年02月09日
    瀏覽(228)
  • 基于C++ 的OpenCV繪制多邊形,多邊形多條邊用不用的顏色繪制

    使用基于C++的OpenCV庫來繪制多邊形,并且為多邊形的不同邊使用不同的顏色,可以按照以下步驟進行操作: 首先,確保你已經(jīng)安裝了OpenCV庫并配置好了你的開發(fā)環(huán)境。 導入必要的頭文件: 創(chuàng)建一個空白的圖像,然后繪制多邊形,并為每條邊選擇不同的顏色: 在這個示例中,

    2024年02月13日
    瀏覽(90)
  • opencv 判斷點在多邊形內(nèi)外

    opencv 判斷點在多邊形內(nèi)外

    ????????基于Python 和 OpenCV 畫出多邊形,以及判斷某個點是不是在多邊形內(nèi)。 ????????函數(shù)定義:cv2.pointPolygonTest(contour, pt, measureDist) ????????函數(shù)功能:找到圖像里的點和輪廓之間的最短距離. 它返回的距離當點在輪廓外的時候是負值,當點在輪廓內(nèi)是正值,如果

    2024年02月12日
    瀏覽(94)
  • Python:opencv畫點、圓、線、多邊形、矩形

    Python:opencv畫點、圓、線、多邊形、矩形

    簡介 :機器學習視覺方向一般都需要在圖像中添加標注框,標注框有著很大的用處,特別是對圖像中某些需要關(guān)注的特征起到圈定的效果,方便對特征選擇進行處理。 相關(guān)攻略: 機器學習:基本流程 Python:調(diào)用攝像頭使用cv2庫錄制視頻 Python:視頻拆分成一幀一幀的圖片

    2024年02月04日
    瀏覽(93)
  • python opencv 繪制矩形、圓、線、多邊形

    python opencv 繪制矩形、圓、線、多邊形

    ????? 個人簡介: 深度學習圖像領(lǐng)域工作者 ?? 總結(jié)鏈接: ???????????? 鏈接中主要是個人工作的總結(jié),每個鏈接都是一些常用demo,代碼直接復制運行即可。包括: ?????????????????????? 1.工作中常用深度學習腳本 ?????????????????????? 2.to

    2024年02月03日
    瀏覽(384)
  • Android OpenCV(三十七):輪廓外接多邊形

    Android OpenCV(三十七):輪廓外接多邊形

    參數(shù)四:closed,逼近曲線是否閉合的標志,true表示封閉,false,表示不封閉。 該方法使用的是 Douglas-Peucker algorithm(道格拉斯-普克算法) 。 Douglas-Peukcer算法 由D.Douglas和T.Peueker于1973年提出,也稱為 拉默-道格拉斯-普克算法 、 迭代適應(yīng)點算法 、 分裂與合并算法 、 D-P算法

    2024年04月13日
    瀏覽(165)
  • OpenCV 對輪廓進行多邊形逼近(Polygon Approximation)

    在 OpenCV 中, cv::approxPolyDP 是一個函數(shù),用于對輪廓進行多邊形逼近(Polygon Approximation)。它可以將復雜的輪廓逼近為簡化的多邊形,從而減少輪廓的數(shù)據(jù)點,使輪廓更加緊湊。 函數(shù)原型如下: 參數(shù)說明: curve : 輸入的輪廓點,可以是一個 std::vectorcv::Point 或 cv::Mat 類型的數(shù)

    2024年02月15日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包