Instale o python-pcl no Ubuntu 18.04
Requisitos : Ao instalar a biblioteca python-pcl, algumas funções do pcl podem ser usadas. Por exemplo, ao usar o open3d para ler um arquivo pcd, apenas a informação xyz é mantida e o valor da intensidade não pode ser obtido. Portanto, a função load em python-pcl é usada para ler.
Referência : Instale o python-pcl no Ubuntu 18.04 para resolver o ImportError: libpcl_keypoints.so.1.7
1. Ambiente atual
- Ubuntu 18.04
- python3.6
2. Registro de instalação
1. Processo de tentativa e erro
Em primeiro lugar, siga o processo no texto de referência, sem problemas. Mas durante o teste, ao importar pcl em python, apareceu um novo erro , alguém fez a mesma pergunta na pergunta do post do blog, e o erro foi o seguinte:
import pcl
undefined symbol: _ZN3pcl6search6KdTreeINS_12PointXYZRGBAENS_11KdTreeFLANNIS2_N5flann9L2_SimpleIfEEEEE13setInputCloudERKN5boost10shared_ptrIKNS_10PointCloudIS2_EEEERKNSA_IKSt6vectorIiSaIiEEEE
Adivinhe o motivo : a versão errada da biblioteca foi vinculada durante o uso, resultando em símbolos indefinidos.
2. Processo de instalação correto
2.1 Instalar biblioteca de nuvem de pontos pcl, Ubuntu18.04 instala pcl versão 1.8 por padrão
sudo apt-get install libpcl-dev pcl-tools
2.2 Use o método de código-fonte para instalar a versão VTK7.1
- Instale o opengl primeiro
sudo apt-get install libgl1-mesa-dev #需要先安装opengl
sudo apt-get install libxt-dev
-
Faça o download do código-fonte do VTK7.1.1
Faça login em https://vtk.org/download/ e faça o download do VTK-7.1.1.tar.gz em Plataforma: fonte em uma versão anterior (7.1.1). -
Descompressão e compilação, instalação
tar -xf VTK-7.1.1.tar.gz
mkdir build
cd build && cmake ..
make -j8
sudo make install
Perceber: Após a conclusão da instalação, o local de instalação do VTK é o seguinte :
/usr/local/include/vtk-7.1 #包含目录,头文件所在
/usr/local/lib # 动态库目录
2.3 Use o código-fonte para instalar o python-pcl
- Primeiro exclua o pcl instalado por tentativa e erro na primeira etapa
esta etapa é importante, caso contrário, o erro de símbolos indefinidos ainda será relatado posteriormente. Por exemplo, eu uso o ambiente virtual de conda desta vez e excluo pcl
rm -rf /home/cui/anaconda3/envs/learning3d/lib/python3.6/site-packages/pcl/
- Baixar python-pcl
git clone https://github.com/strawlab/python-pcl.git(原版,如果速度慢请使用下面的)
git clone https://gitee.com/lucy2020/python-pcl.git
- Modifique a configuração
No arquivo setup.py, modifique três lugares, que são os seguintes: Aqui, a versão do vtk e o diretório include e o diretório da biblioteca do vtk instalado acima são modificados.
修改726行为:vtk_version = '7.1'
修改729行为:vtk_include_dir = os.path.join('/usr/local/include/vtk-' + vtk_version)
修改730行为:vtk_library_dir = os.path.join('/usr/local/lib')
- Compilar e instalar
python setup.py build_ext -i
python setup.py install
3. Resultados
Pode ser usado alegremente no ambiente python3.6pclAgora, como o pequeno exemplo a seguir, os dados da nuvem de pontos são convertidos em numpy:
import numpy as np
import pcl
p = pcl.PointCloud(10) # "empty" point cloud
a = np.asarray(p) # NumPy view on the cloud
a[:] = 0 # fill with zeros
print(p[3]) # prints (0.0, 0.0, 0.0)
a[:, 0] = 1 # set x coordinates to 1
print(p[3]) # prints (1.0, 0.0, 0.0)