У меня есть облако точек креста, сделанное из двух цилиндров, взятых сверху.Я не знаю, как определить центральную точку скрещенных элементов, расположенных на верхнем краю самого высокого цилиндра?
Я еще не очень хорош в написании скриптов на Python и обнаружил библиотеку PyntCloud несколько дней назад.Моих знаний было достаточно, чтобы вырезать облако точек, взятое с камеры Intel Real-Sense, из фона (окружения) с помощью ограничивающего прямоугольника и кривизны.Я пытался упростить облако точек с помощью воксельной сетки, но теперь я не уверен, может ли это помочь мне найти центр.
output.ply - PLY используется в коде
Screen.png - Снимок экрана с отмеченными центральными точками
Кусок кода взят из Jupyter Notebook:
import numpy as np
from pyntcloud import PyntCloud
#Cropping everything that doesn't fit the curvature of shapes:
cropped_input = PyntCloud.from_file('C:\Python37\PC\output.ply')
k_neighbors = cropped_input.get_neighbors(k=1000)
ev = cropped_input.add_scalar_field("eigen_values", k_neighbors=k_neighbors)
cropped_input.add_scalar_field("curvature", ev=ev)
curvature = cropped_input.points["curvature(1001)"]
cropped_input.points = cropped_input.points[curvature > curvature.mean()]
cropped_input.to_file("C:\Python37\PC\simplified_cloud.ply")
cropped_input.plot()
#print(cropped_input)
#Use voxel grid to reduce number of points
cropped_input = PyntCloud.from_file('C:\Python37\PC\simplified_cloud.ply')
voxelgrid_id = cropped_input.add_structure("voxelgrid", n_x=30, n_y=30, n_z=30)
new_cloud = cropped_input.get_sample("voxelgrid_nearest", voxelgrid_id=voxelgrid_id, as_PyntCloud=True)
new_cloud.plot()
#print(new_cloud)
Я ожидаю получить координатыцентральная точка или индекс точки, взятой из списка облаков точек.
Заранее спасибо!