簡體   English   中英

如何獲得輪廓的像素點?

[英]How to get the pixel points of the contours?

如何找到輪廓中的像素點? 假設我在執行findContours之后有一個具有5個輪廓的Image,我知道我們可以使用drawContour函數對輪廓進行drawContour ,但是我需要知道形成輪廓的像素點。

例如:

    cv::medianBlur(img1,img1,7);
    Canny(src1,img1,250,350,3);
    imshow("abc",img1);

    vector< vector<Point> > contours;
    findContours(img1, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

    for(int i=0;i<contours.size();i++){         
    cv::drawContours(src2,contours,i,Scalar(255,100,200),2);
}

我這樣做並得到了這張圖像,現在我想要形成輪廓的像素點,例如(x1,Y1)(x2,y2)...如何獲取這些信息? 這里

當您在代碼中編寫自己時,變量contoursvector< vector<Point> > :點的矢量。 意思是,每個輪廓都是點的向量。

這意味着, contours[0]將為您提供一個點向量(對應於第0個輪廓), contours[1]將為您提供另一點列表,依此類推。

輪廓是Point的2D vector 因此,訪問每個可以使用2點for循環(代碼顯示每個點的XY坐標與輪廓IDS),如下所示-

for(int i = 0; i < contours.size; i++)
    for(int j = 0; i < contours.size; j++)
        cout << "ID = " << i << "( " << contours[i][j].x 
            << " , " << contours[i][j].y << " )"<< endl;

實際上,您可以通過使用approxPolyDP減少輪廓中的approxPolyDP以更好地可視化數據。 此處檢查文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM