2
我正在嘗試使用openCV(使用C)從Canny邊緣圖像中檢索輪廓中非零像素的數目。我正在使用cvFindNextContour來查找使用輪廓掃描儀檢索的後續輪廓。在opencv中使用cvCountNonZero時出錯
但是當我使用cvCountNonZero在輪廓上,錯誤顯示出來:
Bad flag (parameter or structure field) (Unrecognized or unsupported array type)
in function cvGetMat, C:\User\..\cvarray.cpp(2881)
我的代碼是:
cvCvtColor(image, gray, CV_BGR2GRAY);
cvCanny(gray, edge, (float)edge_thresh, (float)edge_thresh*4, 3);
sc = cvStartFindContours(edge, mem,
sizeof(CvContour),
CV_RETR_LIST,
CV_CHAIN_APPROX_SIMPLE,
cvPoint(0,0));
while((contour = cvFindNextContour(sc))!=NULL)
{
CvScalar color = CV_RGB(rand()&255, rand()&255, rand()&255);
printf("%d\n",cvCountNonZero(contour));
cvDrawContours(final, contour, color, CV_RGB(0,0,0), -1, 1, 8, cvPoint(0,0));
}
任何形式的幫助是高度讚賞。提前致謝。
感謝它幫了很多.. :) 但你能告訴我如何將一個輪廓完全包圍在一個矩形。我的意思是圍繞輪廓的封閉矩形可以是水平的也可以是垂直的。那麼如果輪廓是傾斜的呢?矩形看起來只包圍了一半輪廓。有沒有什麼辦法可以用多邊形把它包圍起來並找到它的面積?謝謝! – bluechill
在opencv Ref手冊中查看cvContourArea()函數以查找該區域。 – G453