Я не знаю, как использовать PCL с Python или C #.В общем, вы смотрите на следующие шаги:
- Фильтрация точек в интересующий регион
- Сегментация фигуры
- Извлечение параметров
Если вас интересует только Python, тогда OpenCV может быть лучшим вариантом.Вы также можете разработать основную логику на C ++ и обернуть ее для Python или C #.C ++ также имеет несколько хороших библиотек пользовательского интерфейса (Qt, nanogui ), пожалуйста, смотрите следующие детали для достижения цели с помощью PCL
Фильтрация
CropBox
*Для этого можно использовать 1019 * или PassThrough
.Это приведет к аналогичным результатам, как показано на рисунке, при условии, что кадр был выбран правильно.Если нет, облако точек может быть легко преобразовано
Сегментируя форму
Предполагая, что вы хотите среднюю окружность, вам, возможно, придется поэкспериментировать с Circle 2D, Circle 3D иМодели цилиндров.Более подробная информация об использовании и API: здесь .Выбранный метод может быть простым SAC (выборочный консенсус), например RANSAC (случайный SAC), или расширенным методом, таким как LMEDS (наименьшая медиана квадратов) или MLESAC (SAC оценки максимального правдоподобия)
Извлечение параметров
Все модели имеют поле радиуса, которое можно использовать для определения длины окружности по стандартной формуле (2 *pi
*r
)
Отказ от ответственности : Обратите внимание, что формакруговой, а не эллипс, а цилиндр - это прямоугольные цилиндры.Таким образом, если измеряемый объект (рука или бицепс) не является круглым, вычисленное значение может не совпадать с истинным значением в крайних случаях