Сегментация здания (Облако точек)Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Сегментация здания (Облако точек)

Сообщение Гость »


my plan is to segment a building or a flat into rooms. As a basis I have a ply file and python 3.11. Now I have a segmentation which does not end at the walls. I hope this works or maybe someone has a better solution.

Код: Выделить всё

import open3d as o3d
import numpy as np
from sklearn.cluster import KMeans
import os

point_cloud = o3d.io.read_point_cloud("fox_valley_single_1cm - Cloud.ply")
points = np.asarray(point_cloud.points)
num_clusters = 6  # Number of rooms or areas
kmeans = KMeans(n_clusters=num_clusters)
kmeans.fit(points)
cluster_labels = kmeans.labels_
room_colors = { [1, 0, 0],[0, 1, 0], [0, 0, 1], [1, 1, 0], [1, 0, 1], [0, 1, 1],}
point_colors = [room_colors[label] for label in cluster_labels]
colored_point_cloud = o3d.geometry.PointCloud()
colored_point_cloud.points = o3d.utility.Vector3dVector(points)
colored_point_cloud.colors = o3d.utility.Vector3dVector(point_colors)
o3d.visualization.draw_geometries([colored_point_cloud])
plane_model, inliers = point_cloud.segment_plane(distance_threshold=0.01, ransac_n=3,/ num_iterations=1000)
outlier_cloud = point_cloud.select_by_index(inliers, invert=True)
ceiling_model, ceiling_inliers = outlier_cloud.segment_plane(distance_threshold=0.01,ransac_n=3,num_iterations=1000)
ceiling_cloud = outlier_cloud.select_by_index(ceiling_inliers)
outlier_cloud = outlier_cloud.select_by_index(ceiling_inliers, invert=True)
walls = outlier_cloud
output_folder = "output"
if not os.path.exists(output_folder):
os.makedirs(output_folder)
o3d.io.write_point_cloud(os.path.join(output_folder, "walls.ply"), walls)


Источник: https://stackoverflow.com/questions/781 ... pointcloud
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сегментация текста, сегментация строк, от строки к словам, от слов к символам с помощью Python и OpenCV
    Anonymous » » в форуме Python
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous
  • Можно ли интерполировать уровни серого из изображения в оттенках серого в облако точек на C++?
    Anonymous » » в форуме C++
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Как спроецировать облако точек на плоскость земли и перенести его в 2D-изображение (OpenCV Mat) в библиотеке облаков точ
    Anonymous » » в форуме C++
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Вписать 3D-цилиндр в облако точек
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Вписать 3D-цилиндр в облако точек
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»