记录在win10上复现pvn3d遇到python-pcl安装问题解决方法,成功安装方法和大小端错误

        不知道大家在复现pvn3d的时候有没有被pcl折磨过,反正我是被狠狠的折磨了,属于是一点点版本差异,环境差异就要报错,安装不了。可惜当时很多错误我解决就解决了,没有记录,因为当时非常烦躁,已经搞了两天了,就这个错误截了个图,并且印象比较深刻。

        这个错误大概是说,你x86系统大小端识别问题,建议是遇到这个问题就放弃吧,我反正是解决了好久没有成功。简单说一下我找到的解决办法。

大小端错误

        因为PCLPointCloud2.h 文件无法确定系统的字节序,从而引发了编译错误。通常分为大端(Big Endian)和小端(Little Endian)。

        修改setup.py 文件,找到如下:

#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN)
#define BIG_ENDIAN
#elif defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN)
#define LITTLE_ENDIAN
#elif defined(_WIN32) || defined(__i386__) || defined(__x86_64__)
#define LITTLE_ENDIAN
#else
#error "unable to determine system endianness"
#endif

#if defined(__BYTE_ORDER) 之前添加 如下,因为一般电脑都是小端,或者你可以用命令查看,具体我忘了,可以搜一下。

#define LITTLE_ENDIAN

保存,并继续运行:

python setup.py build_ext -i 

希望你看到这可以解决问题,不过想来不太行,我就没有解决。我接下来讲一下我如何解决问题。

安装python-pcl

        参考的文章是https://blog.csdn.net/CHONGjjj/article/details/132077998,作者讲的很全面,win10解决问题很好,不过我按照他的方法安装不了python-pcl,所以才写了一篇。

下面是一些关键步骤

1. 安装vs2017(别装新版本,要不安不上指定版本的Cython) 链接是 https://qiniu-pic.atri.wiki/share/download/visual_studio_community_2017_version_15.3.exe

2. 我选的python版本是3.6,安装的Cython版本是0.25.2,其他版本包的版本都是适配这些版本,别问为什么,问就是,其他的试过,不行,看了一堆乱七八糟的博客,然后尝试这样安装,发现可以,并且和别人也试验过,他也是只有这样可以,就很怪。conda创建环境不多说。

conda create -n pvn3d python=3.6

3. 然后安装PCL1.8.1, https://github.com/PointCloudLibrary/pcl/releases?page=3

        选择第四个 ,当然,可以根据自己计算机来选择。并且!安装的时 候尽量放在根目录不要有空格,安装下来是pcl 1.8.1,建议修改为pcl181。 

        其实我不知道这样也会报错,但是之前看到有博客提过一嘴,并且我三周目这样尝试确实没出错,所以建议大家就这样做,反正没有损失。

        pcl安装结束,一般会自动跳转安装openni,安装就可以了,如果不小心跳过了,也可以到这个位置:~\3rdParty\OpenNI2 点击如图安装

        

        这里安装后需要自己设置几个环境变量,可以选择win+r,然后输入sysdm.cpl,回车。在高级选项中选择环境变量,然后点击新建,添加变量名和变量值:

        需要添加 VTK_ROOT,然后路径就是E:\PCL181\3rdParty下的VTK,PCL_ROOT,就是你的安装位置,OPEN_NI2_ROOT,也是在E:\PCL181\3rdParty下,BOOST_ROOT,同上。

        然后在系统变量中找到path,双击,继续添加变量,我建议是把我图中的都添加了,反正我之前老报错找不到什么什么包,这边建议,用到的全填加。

3. 在https://github.com/strawlab/python-pcl下载源代码。

然后下载这个文件: https://qiniu-pic.atri. wiki/share/download/gtk%2B-bundle_3.10.4-20131202_win64.zip

解压后把gtk中bin里面的文件放进 python-pcl-master文件夹中的pkg-config文件夹,注意,这里是要把bin里面的文件全部复制到pkg-config中,不要把bin放到pkg-config里,实测,我要是把bin放到pkg-config里面,后面会出现一堆报错然后又到大小端问题,然后解决不了,恭喜又开始新的周目。难受了。

        然后在pkg-config文件夹运行 InstallWindowsGTKPlus.bat这个文件,如果遇到与问题,可以右键然后管理员运行。运行成功如图有三个文件夹基本就是对了:

        然后切换到之前安装好py3.6和Cython版本为0.25.2的环境,在 python-pcl-master运行:

python setup.py build_ext -i

就是这一步,报错老多了,一个一个来看吧,我把我遇到的都给你们说一说吧,主要是还是调整代码的问题,眼睛我都看花了,配置文件代码太多了,还生怕修改的不对直接瘫了。看能不能帮到你们吧

如果安装成功就:

python setup.py install

这样就算安装成功,然后

pip list

        有版本号为0.3.0rc1的python-pcl就装好了,注意他安装成功会生成_ext.cp36-win_amd64.pyd文件,需要放到pvn3d中E:\pvn3d\lib\pointnet2_utils下,这个问题我后面会专门写一章来讲。

“boost/shared_ptr.hpp”: No such file or directory

        问题主要是无法找到boost包,属于是常见抽风了,明明添加了环境变量,明明就在他该在的位置,欸,就是找不到!这里的方法通用,也适应其他的包eigen,vtk,openni,qhull,flann。

        修改方法,去setup.py里面第95行开始,是pcl需要用到的包的root目录定义:

        默认设置是通过你设置的pcl_root去定义这些包的路径的,但是我检查过,没有什么问题,但就是找不到包,没办法建议这里别用路径加法了,直接用绝对路径定义把图中boost_root路径定义为

E:\PCL181\3rdParty\Boost

        自己按自己的路径修改哈,大概就是定位到pcl安装路径,然后在旗下的 3rdParty\Boost。并且,理论上是可以了,但是建议继续修改如图位置:

        我没有单独修改尝试过,在撕代码的时候,发现这里也是定义包路径,就一并修改了,并且他定义了不同版本的pcl的包路径,你可以只修改你下载的版本的包路径,建议还是绝对路径,包不出错。 

        其他包同这个一样修改!!!

(pvn3d) E:\PCL181\Pointnet2_PyTorch>python setup.py build_ext running build_ext

        这个错误应该比较小众,我也还是提一下,因为看到有些复现博客让你在pointnet2_pytorch下运行setup.py,就会出现这个错误,我不知道他们为什么这么说哈,可能打错了,或者什么的,反正我打开看了,这个文件夹下的setup并没有链接gcc,运行什么东西,就只写了些变量。

        遇到这个问题,就是运行了错误的setup。请在E:\PCL181\Pointnet2_PyTorch\pointnet2_ops_lib下运行setup.py文件,就没问题了。

ValueError: cannot find context for forkserver

        如果出现这个报错,他会提示你报错位置,去到指定位置,把forkserver改为spawn就好了

这个问题,我遇到了,但是没有截图留存,不过是个小bug,没关系。

小问题汇总

        这里总结一些其他小问题,在上面都或多或少提过,以防你看的不仔细,这里汇总一下。

1. 安装尽量不要留空格和小数点。原安装文件:PCL 1.8.1,我一般改为:PCL181

2. 我的环境,python3.6,cython0.25.2,Visual Studio 2017,这里建议,创建完环境,只安装这些,就直接安装pcl,这样容易成功一点。并且我只是建议这些环境,因为我尝试过python3.8,3.10还有一些其他环境,都没安装上。

3. 运行成功会生成一个_ext.cp36-win_amd64.pyd文件,记得放到E:\pvn3d\lib\pointnet2_utils位置哦。

好了以上就是全部内容,希望有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值