При использовании функции openCv приблизительныйPolDP на веб-канале для обнаружения прямоугольников я иногда сталкиваюсь с ошибкой.
Приложены два изображения, на обоих из них виден прямоугольник, но функция cappoPolyDP только иногда находит прямоугольник, а иногда просто находит прямую линию между двумя диагональными углами.
Я использую функцию drawContours, чтобы рисовать непосредственно на цветном изображении, но при этом приложение ApproPolyDP используется для изображения в оттенках серого.
Код для создания поли:
for(int i = 0; i < contours.size();i++) {
double epsilon = 0.06*arcLength(contours[i], true);
approxPolyDP(contours[i], contours[i], epsilon, true);
}
Любые идеипочему я получаю линию вместо прямоугольника?Если требуется больше кода, пожалуйста, спросите.
Результат функции, возвращающей строку
Входной сигнал в градациях серого
Вид правильного результата функции