一、基本配置
博主这里使用的python环境来自anaconda,python编译器使用的是PyCharm。
Python-PCL的配置
(1)将这个github中的仓库以ZIP形式下载到本地并解压。
(2)下载Windows Gtk+并解压,将bin目录下的文件拷贝到上一个步骤解压的python-pcl-master文件夹下的pkg-config文件夹中
百度网盘~链接: https://pan.baidu.com/s/1rxmBHsDy2LabSg-l_rUsNQ 提取码: 9y8t
(3)安装PCL,设置环境变量
安装PCL以及配置环境变量的过程,参考这一篇博文:https://blog.csdn.net/find_god/article/details/101105262的PCL安装和环境配置。
(4)安装必需模块
如果电脑中同时有python2和python3的话,注意电脑中的pip对应哪个版本的python,若pip对应python2,以下命令用pip3
这里建议下载Anaconda3,在实际使用中,只需要额外安装opencv包,其余的包anaconda都已经有了。pip install --upgrade pip
pip install cython
pip install numpy
回到python-pcl-master
文件夹,打开cmd输入如下指令配置python-pcl:
python setup.py build_ext -i
python setup.py install
到此整个编程环境就配置好啦!可以开始写代码了~
二、测试代码
注意:请千万不要把py文件的文件名设置为pcl.py。
import cv2
depth = cv2.imread("depth.png",-1)
import pcl
cloud = pcl.PointCloud() # 存储图像的点云
rows = len(depth)
cols = len(depth[0])
pointcloud = []
#camera_factor = 1
#camera_cx = 0
#camera_cy = 0
camera_fx = 588.03
camera_fy = 587.07
for m in range(0, rows):
for n in range(0, cols):
d = depth[m][n][0] + depth[m][n][1]*256
if d == 0:
pass
else:
z = float(d)
x = n * z / camera_fx
y = m * z / camera_fy
points = [x, y, z]
pointcloud.append(points)
import numpy as np
pointcloud = np.array(pointcloud, dtype = np.float32)
cloud.from_array(pointcloud)
pcl.save(cloud, "cloud.pcd", format = 'pcd')