Я хочу получить центр масс формы круга из бинарного изображения, но на выходе получается более одного центра масс. Я использую код из веб-учебника opencv о моменте изображения и немного изменен. К вашему сведению, я использую С++ API OpenCV.
И вывод:
Я ожидаю, что текстовый вывод даст, возможно, 3 центроида из 3 контуров, но на самом деле 7 контуров (контуры [0], ..., контуры [6]).
Какой из них центроид? Или какая площадь контура формы круга?
Затем я изменил код, удалил некоторые контуры (потому что реальная картинка очень шумная, и я просто хочу получить некоторые определенные контуры, форму круга, поэтому я должен удалить другие контуры, такие как линия и символ), используя:
contours.erase()
Я хочу получить центроид только из контура области от 100 до 500.
Но вывод стал странным..
Центроиды как бы улетают куда угодно от своих контуров.
Тогда еще есть 5 центроидов из 5 контуров (контуры[0],...,контуры[4]).
Что мне делать? Я только хочу получить центроид формы круга (выше числа 3). Мне очень нужен твой совет. Большое спасибо! :D
*Извините за мой плохой английский..
if ( contourArea(contours[i], false) < 100 || contourArea(contours[i], false) > 500) {contours.erase(contours.begin()+i); }
. - person lulu   schedule 19.05.2013