Вот код:
import open3d as o3d
import numpy as np
import matplotlib.pyplot as plt
import os
import sys
def draw_registration_result(source, target, transformation):
#source_temp = copy.deep_copy(source)
#target_temp = copy.deepcopy(target)
source.paint_uniform_color([1, 0.706, 0])
target.paint_uniform_color([0, 0.651, 0.929])
#source.transform(transformation)
o3d.visualization.draw_geometries([source, target])
def preprocess_point_cloud(pcd, voxel_size):
print(":: Downsample with a voxel size %.3f." % voxel_size)
pcd_down = pcd.voxel_down_sample(voxel_size = voxel_size)
radius_normal = voxel_size * 2
radius_feature = voxel_size * 5
print(":: Estimate normal with search radius %.3f." % radius_normal)
pcd_down.estimate_normals(o3d.geometry.KDTreeSearchParamHybrid(radius = radius_normal, max_nn = 30))
print(":: Compute FPFH feature with search radius %.3f." % radius_feature)
pcd_fpfh = o3d.pipelines.registration.compute_fpfh_feature(pcd_down,
o3d.geometry.KDTreeSearchParamHybrid(radius = radius_feature, max_nn = 100))
return pcd_down, pcd_fpfh
def prepare_dataset(voxel_size):
print(":: Load two point clouds and disturb initial pose.")
demo_icp_pcds = o3d.data.DemoICPPointClouds()
source = o3d.io.read_point_cloud(demo_icp_pcds.paths[0])
target = o3d.io.read_point_cloud(demo_icp_pcds.paths[1])
transformation = np.asarray([[0.0, 0.0, 1.0, 0.0], [1.0, 0.0, 0.0, 0.0],
[0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0]])
source.transform(transformation)
draw_registration_result(source, target, np.identity(4))
source_down, source_fpfh = preprocess_point_cloud(source, voxel_size)
target_down, target_fpfh = preprocess_point_cloud(target, voxel_size)
return source, target, source_down, target_down, source_fpfh, target_fpfh
voxel_size = 0.05
source, target, source_down, target_down, source_fpfh, target_fpfh = prepare_dataset(voxel_size)
Как только я прокомментирую все следующие строки:
source.transform(transformation)
source.paint_uniform_color([1, 0.706, 0])
target.paint_uniform_color([0, 0.651, 0.929])
Код работает, облака точек визуализируются. Но код показывает ту же ошибку, если я раскомментирую любую из строк.
В коде VS я получаю следующую ошибку:
[Running] python -u "d:\python\Open3D\Practice.py"
:: Load two point clouds and disturb initial pose.
[Done] exited with code=3221225477 in 2.787 seconds
Вот информация о системе, open3d и python:
`- Операционная система: Windows 10, 64-разрядная версия
- Версия Python: Python 3.11.9/вывод из системы импорта; print(sys.version)
- Версия Open3D: вывод из Python: print(open3d.__version__)
- Система архитектура: процессор на базе x64.
- Это удаленная рабочая станция?: нет
- Метод установки Open3D?: pip`
Я пытался запустить код в виртуальной среде, но это не сработало. Те же строки, когда я их прокомментировал, код начал работать. Также я пробовал разные команды установки, но проблема все та же. Вот команды:
pip install open3d
pip3 install open3d
pip install --user open3d
Подробнее здесь: https://stackoverflow.com/questions/787 ... -322122547