#python #numpy #opencv #sampling
Вопрос:
Я пытаюсь получить равноудаленный образец из контура OpenCV, чтобы вычислить дескриптор Фурье этой формы.
В настоящее время я правильно извлек контуры , используя cv.findContours()
, но в результирующем numpy
массиве есть точки с переменными расстояниями между ними. Что я пытаюсь сделать, так это сгенерировать образец по этому контуру, который имеет равное расстояние между всеми точками.
То, что я попробовал сейчас, — это отслеживать исходный контур и рисовать точки на правильном расстоянии в направлении ближайшей следующей точки исходного контура.
Проблема с этим подходом заключается в том, что практически невозможно получить правильное расстояние в конце фигуры.
Есть ли какой-то другой способ сделать это? Я чувствую, что должно быть что-то подобное numpy.linspace
, что работает для целых фигур, а не только для 2 точек, но я не смог найти что-то похожее.
Надеюсь, все понятно, заранее спасибо!
Комментарии:
1. вы можете использовать параметр findContour для извлечения каждого пикселя контура без подвыборки. Оттуда вы можете перемещаться по контуру и подсчитывать расстояние от пикселя до пикселя по контуру, чтобы получить общую окружность контура и разделить ее на нужное количество точек, а затем во втором запуске выбрать такие точки (снова измеряя расстояние по контуру, пиксель за пикселем.
2. @Micka Не является ли сумма «расстояний от пикселя до пикселя» именно тем, что
arcLength
возвращает?3. @HansHirse, вероятно, вы правы, это, скорее всего, облегчит задачу!