Я пытаюсь подсчитать количество ненулевых пикселей в контуре, полученном из изображения Canny edged с использованием openCV (с использованием C). Я использую cvFindNextContour, чтобы найти следующий контур, полученный с помощью контурного сканера.Ошибка при использовании cvCountNonZero в opencv
Но когда я использую 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
проверить функцию cvContourArea() в opencv Справочное руководство для поиска области. – G453