[英]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)
, ...
如何獲取這些信息? ,
當您在代碼中編寫自己時,變量contours
是vector< 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.