Рисование необработанного исключения не выпуклым поли с использованием fillPoly из интерфейса OpenCV 2.4.3 C ++

Я пытаюсь нарисовать в двоичном изображении некоторый связанный компонент, найденный с помощью findContours, используя интерфейс OpenCV 2.4.3 c ++. Код такой.

std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours( tempOR, contours, hierarchy, CV_RETR_EXTERNAL , CV_CHAIN_APPROX_TC89_L1, cv::Point(0, 0) );

bgs_detection_or=cv::Mat::zeros(cv::Size(m_frame_width, m_frame_height), CV_8UC1);
for( int i = 0; i < contours.size(); i++ )
{
if (pointPolygonTest(contours[i], cv::Point2f(m_car_coords.x, m_car_coords.y-1), false)>-1)
{
std::vector<cv::Point> contours_poly;
approxPolyDP( cv::Mat(contours[i]), contours_poly, 3, true );

//cv::fillConvexPoly(bgs_detection_or, contours_poly, cv::Scalar(255));
cv::fillPoly(bgs_detection_or, contours_poly, cv::Scalar(255));
break;
}
}

Как видите, я также пытался использовать fillConvexPoly. fillConvexPoly не выдает никаких ошибок, но неправильно рисует полицию. После этого я попытался использовать fillPoly, и это все, я не могу справиться с необработанным исключением.

Я также попытался вызвать fillPoly таким образом:

cv::fillPoly(bgs_detection_or, contours_poly, contours_poly.size(), 1, cv::Scalar(255));

Но тогда у меня есть ошибка компиляции: Ошибка 35 ошибка C2665: «cv :: fillPoly»: ни одна из 2-х перегрузок не может преобразовать все типы аргументов

Что я делаю неправильно?

1

Решение

Я нашел обходной путь для достижения конечной цели:

drawContours( bgs_detection_or, contours, i, cv::Scalar(255), CV_FILLED);

Но я не могу понять, почему fillPoly выдает необработанную ошибку, а fillConvexPoly — нет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector