• Win10平台pythonpcl环境搭建


    Windows下安装python-pcl - 知乎 (zhihu.com)

    起步:Win10平台python-pcl环境搭建(内含从源码编译) (sigmameow.com)

    版本的对应参考:(39条消息) 点云处理工具——python-pcl安装教程_薛定猫的博客-CSDN博客_python-pcl

    以下内容来自:起步:Win10平台python-pcl环境搭建(内含从源码编译) (sigmameow.com)

    1.必要材料下载

    2. 安装PCL-1.8.1-AllInOne-msvc2017-win64.exe

    记得这一步选择选择给所有用户PATH种添加PCL

    PCL第一步Add PCL to the system PATH for all users

    然后安装路径一定不要是默认的C:\Program Files,路径越简洁越好,如果路径复杂,他安装到一半跳出来Warning:PATH路径过长,忽略他就好。

    选择安装路径为D:\PCL_Project

    然后一直下一步,确认两个勾全勾上了,然后点安装

    勾选PCL和3rd Party Library

    装到一半,不出意外会弹出来这个对话框,让你选择OpenNI2的拓展包,一定不要安装到系统的默认路径C:\Program Files\ 统统装到新建的PCL文件夹里面,如果装到系统路径里了,那么除非你用管理员权限启动命令提示行,否则import pcl就会报找不到DLL文件的错误(血的教训2

    OpenNI选择根目录D:\PCL_Project

    安装路径改成:D:\PCL_Project\OpenNI2\

    注:

    这一步我这里出现的问题是:无法安装openni2.2,可能是因为我之前针对Visual Studio2017配置过Pcl的原因。

     所以,我选择单独下载opneni2.2试试看能不能单独安装:

    OpenNI 2 Downloads and Documentation | The Structure Sensor

    结果还是不行,还是只有修复的选项,算了,就用之前安装在C盘中的openni2吧。

    之前安装的opnni2:

     

    3.修改系统环境变量

    此电脑>右键>更多>属性

    选择我的电脑属性

    高级系统设置>高级>环境变量

    设置环境变量

    新建以下3个环境变量

    (默认应该就有了) PCL_ROOT:D:\PCL_Project\PCL 1.8.1

    OPEN_NI2_ROOT: D:\PCL_Project\OpenNI2

    VTK_ROOT: D:\PCL_Project\PCL 1.8.1\3rdParty\VTK

    xps15 9550:

    (默认应该就有了) PCL_ROOT:D:\PCL 1.8.1

    OPEN_NI2_ROOT: D:\OpenNI2

    VTK_ROOT: D:\PCL 1.8.1\3rdParty\VTK

    输入上面的三个环境变量

    然后双击Path环境变量,添加4个新字段(注意大小写):

    dell inspiron 5485:
    %PCL_ROOT%\bin\;
    %OPEN_NI2_ROOT%\Tools;
    %VTK_ROOT%\bin;
    D:\PCL_Project\OpenNI2\Samples\Bin

    最后一个环境变量换成:

    D:\PCL_Project\PCL 1.8.1\3rdParty\OpenNI2\Samples\Bin

    w530:

    %PCL_ROOT%\bin\;%OPEN_NI2_ROOT%\Tools;%VTK_ROOT%\bin;D:\OpenNI2\Samples\Bin;

     xps15 9550:

    %PCL_ROOT%\bin\;
    %OPEN_NI2_ROOT%\Tools;
    %VTK_ROOT%\bin;
    D:\OpenNI2\Samples\Bin;

    假如OpenNI2文件夹中只有一个文件,是这个情况:

    那么,就先双击,并Remove:

     

    在双击,并Install:

     

    添加4个新字段

    4. 创建虚拟环境

    用管理员模式启动命令行(Windows Powershell),依次输入以下代码(理解理解啊,根据自己的实际情况和上面的基础知识适度改编,注意>后面才是要输入的命令,不要复制粘贴这边的代码,要自己敲进去,不然pip install numpy+mkl那一步报错别来找我)

    PS C:\WINDOWS\system32> cd D:\PCL_Project\
    PS D:\PCL_Project> Python --version
    Python 3.5.4
    PS D:\PCL_Project> pip install virtualenv
    PS D:\PCL_Project> virtualenv pcl --python=D:\PCL_Project\Python36\python.exe --no-site-packages
    Running virtualenv with interpreter D:\Applications\Python36\python.exe
    Using base prefix 'D:\\\\Applications\\\\Python36'
    New python executable in D:\PCL_Project\pcl\Scripts\python.exe
    Installing setuptools, pip, wheel…done.
    PS D:\PCL_Project> pcl\Scripts\activate   #激活虚拟环境
    (pcl) PS D:\PCL_Project> pip install cython==0.25.2
    Collecting cython==0.25.2
     Downloading
     https://files.pythonhosted.org/packages/74/41/de9dd956efe3eda0759f1ff7854e6322e494c32d3c94a349fc0805873c7a/Cython-0.25.2-cp36-none-win_amd64.whl (2.1MB)
      100% |████████████████████████████████| 2.1MB 1.0MB/s
    Installing collected packages: cython
    Successfully installed cython-0.25.2
    (pcl) PS D:\PCL_Project> pip install numpy-1.14.3+mkl-cp36-cp36m-win_amd64.whl # 注意此处的文件名,这一步的参考在下面。
    Processing d:\pcl_project\numpy-1.14.3+mkl-cp36-cp36m-win_amd64.whl
    Installing collected packages: numpy
    Successfully installed numpy-1.14.3+mkl
    

     其中,这一步:

    (pcl) PS D:\PCL_Project> pip install numpy-1.14.3+mkl-cp36-cp36m-win_amd64.whl 

    参考:

    (39条消息) 利用Python中的pip安装numpy+mkl库,终于搞定!_StrawberryBoy的博客-CSDN博客_numpy-mkl

    Archived: Python Extension Packages for Windows - Christoph Gohlke (uci.edu)

    查看anaconda虚拟环境中的python版本:

    因为我的anaconda中的Python是3.6.13版本的,所以我选择下面的这个:

    下载后复制到文件夹python-pcl中:

    然后安装:

    (wujiaochang) D:\python-pcl>pip install "numpy-1.19.5+mkl-cp36-cp36m-win_amd64.whl"

    安装的过程如下:

    (wujiaochang) D:\python-pcl>pip install "numpy-1.19.5+mkl-cp36-cp36m-win_amd64.whl"
    Processing d:\python-pcl\numpy-1.19.5+mkl-cp36-cp36m-win_amd64.whl
    Installing collected packages: numpy
      Attempting uninstall: numpy
        Found existing installation: numpy 1.13.1
        Uninstalling numpy-1.13.1:
          Successfully uninstalled numpy-1.13.1
    Successfully installed numpy-1.19.5+mkl

    4.5 检查环境变量是否修改成功

    (pcl) PS D:\PCL_Project> python
    Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os
    >>> os.getenv("PCL_ROOT")
    'D:\\\\PCL_Project\\\\PCL 1.8.1'   # 成功
    >>> os.getenv("PCL_ROOT")
    >>> # 啥也没返回,就失败

    如果啥也没返回,说明环境变量没有被虚拟环境里面的Python读取到,重新检查变量名有没有拼写错误,没有错误的话,关闭命令行,桌面刷新一下,然后上面的步骤,应该就能读出来了

    同样的道理,检查OPEN_NI2_ROOTVTK_ROOTPath,确认环境变量可以被都打印出来没错误,再进行下一步

    5. setup.py的准备工作

    • 打开python-pcl-master文件夹,打开pkg-config文件夹,里面应该有只有3个文件。

    三个文件列表

    • 打开gtk+-bundle_3.10.4-20131202_win64.zip,把bin文件夹里面的所有文件(86个),都复制到pkg-config文件夹下面。(注意是复制文件,而不是拷贝文件夹,血的教训3)

    复制完成后,pkg-config文件夹应该是乱糟糟的一团(89个文件,而不是pkg-config里面多了个bin文件夹)

    • pkg-config目录下,运行脚本InstallWindowsGTKPlus.bat,该脚本会下载必须的内容,下载完成后会多出这些文件夹,如下图所示:

    到此为止,setup.py的准备工作已经完成了

    6. 尝试安装python-pcl(从源码编译)

    把文件夹python-pcl-master的名字改成:python-pcl

    cd到python-pcl文件夹。

    回到刚刚的命令行里面(如果之前环境变量读取失败关掉了的话,记得重新激活虚拟环境)

    (pcl) PS D:\PCL_Project> cd D:\python-pcl
    (pcl) PS D:\PCL_Project\python-pcl> python setup.py build_ext -i

    然后会出来一大堆疑似乱码的东西,到这里说明离成功很接近了!

    耐心等待,如果等待时间很长,电脑还嗡嗡作响留一阵子,结果是这样的话

    pcl_visualization.obj : warning LNK4197: export 'PyInit_pcl_visualization' specified multiple times; using first specification
     Creating library build\temp.win-amd64-3.6\Release\pcl\pcl_visualization.cp36-win_amd64.lib and object build\temp.win-amd64-3.6\Release\pcl\pcl_visualization.cp36-win_amd64.exp
    Generating code
    Finished generating code
    (pcl) PS D:\PCL_Project\python-pcl-master>

    我的是出现了这个问题:

    (wujiaochang) PS D:\python-pcl> python setup.py build_ext -i
    cannot find environment PKG_CONFIG_PATH
    set environment PKG_CONFIG_PATH=D:\PCL 1.8.1\lib\pkgconfig;D:\PCL 1.8.1\3rdParty\FLANN\lib\pkgconfig;D:\PCL 1.8.1\3rdParty\Eigen\lib\pkgconfig;
    D:\python-pcl\pkg-config\pkg-config.exe
    -1.8
    No use cuda.
    running build_ext
    cythoning pcl/_pcl_180.pyx to pcl\_pcl_180.cpp
    D:\Anaconda\envs\wujiaochang\lib\site-packages\Cython\Compiler\Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: D:\python-pcl\pcl\_pcl.pxd
      tree = Parsing.p_module(s, pxd, full_module_name)
    cythoning pcl/pcl_visualization.pyx to pcl\pcl_visualization.cpp
    D:\Anaconda\envs\wujiaochang\lib\site-packages\Cython\Compiler\Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: D:\python-pcl\pcl\pcl_visualization.pxd
      tree = Parsing.p_module(s, pxd, full_module_name)
    building 'pcl._pcl' extension
    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

    解决方法参考:

     How to solve "error: Microsoft Visual C++ 14.0 or greater is required" when installing Python packages? - Stack Overflow

    上面链接里面我用了下面这个方法:

    UPDATE: December 28, 2020

    You can also follow these steps here:

    1. Select: Workloads → Desktop development with C++
    2. Then for Individual Components, select only:
      • Windows 10 SDK
      • C++ x64/x86 build tools

    第一步:

    windows中输入搜索内容:

     

    第二步:

    最后的结果:

    inspiron 5485可以。

    w530不可以,anaconda安装不上。

    xps 15 9550不可以,还是出现这个问题:

    (wujiaochang) D:\python-pcl>python setup.py build_ext -i
    cannot find environment PKG_CONFIG_PATH
    set environment PKG_CONFIG_PATH=D:\PCL 1.8.1\lib\pkgconfig;D:\PCL 1.8.1\3rdParty\FLANN\lib\pkgconfig;D:\PCL 1.8.1\3rdParty\Eigen\lib\pkgconfig;
    D:\python-pcl\pkg-config\pkg-config.exe
    -1.8
    No use cuda.
    running build_ext
    skipping 'pcl\_pcl_180.cpp' Cython extension (up-to-date)
    building 'pcl._pcl' extension
    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

    原因猜测可能是在C盘安装了pcl-1.9.1,有可能环境变量有冲突。

    那就恭喜你了,没有任何问题的编译完成,接下来只要输入以下命令:

    (pcl) PS D:\PCL_Project\python-pcl-master> python setup.py install
    ……
    Using d:\pcl_project\pcl\lib\site-packages
    Searching for numpy==1.14.3+mkl
    Best match: numpy 1.14.3+mkl
    Adding numpy 1.14.3+mkl to easy-install.pth file
    
    Using d:\pcl_project\pcl\lib\site-packages
    Finished processing dependencies for python-pcl==0.3
    (pcl) PS D:\PCL_Project\python-pcl-master>
    

    出来上面的提示,就大功告成了!

    但是出来这个报错的话:

    LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc140-mt-1_64.lib'
    error: command 'C:\\\\Program Files (x86)\\\\Microsoft Visual Studio 14.0\\\\VC\\\\BIN\\\\x86_amd64\\\\link.exe' failed with exit status 1104
    (pcl) PS D:\PCL_Project\python-pcl-master>
    

    那还要恭喜你,因为这个问题我已经解决了
    学会看一下报错,报错讲了啥?说的是打不开那个文件,那我们看看那个文件到底有啥猫腻

    这里采用了everything文件搜索工具,文件秒搜你值得拥有(看看就行了,不是重点)

    everything搜索结果

    很明显,是vc140和vc141的文件名出错,然后我们打开那个文件路径
    D:\PCL_Project\PCL 1.8.1\3rdParty\Boost\lib
    就会发现:

    文件夹界面

    好像文件名全都不对啊,然后你就把原来的lib文件夹复制一份,改名位lib.old文件夹,然后用鼠标+键盘,把所有的vc141都改成vc140即可

    不出意外应该就打包完成啦。

    7. 功能测试

    激活虚拟环境

    (pcl) PS D:\PCL_Project> python
    >>> import pcl
    >>>
    

    说明安装成功!继续进行功能测试看看

    >>> import pcl
    >>> import numpy as np
    >>> p = pcl.PointCloud(np.array([[1, 2, 3], [3, 4, 5]], dtype=np.float32))
    >>> seg = p.make_segmenter()
    >>> seg.set_model_type(pcl.SACMODEL_PLANE)
    >>> seg.set_method_type(pcl.SAC_RANSAC)
    >>> indices, model = seg.segment()
    [pcl::SampleConsensusModel::getSamples] Can not select 0 unique points out of 2!
    [pcl::RandomSampleConsensus::computeModel] No samples could be selected!
    [pcl::SACSegmentation::segment] Error segmenting the model! No solution found.
    >>>
    

    当然在普通命令行里面(非管理员模式)还有几率遇到这个报错

    >>> import pcl
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
     File "D:\Virtualenv\pcl\lib\site-packages\python_pcl-0.3-py3.5-win-amd64.egg\pcl\__init__.py", line 2, in <module>
      from ._pcl import *
    ImportError: DLL load failed: 找不到指定的模块。
    

    有大佬 https://github.com/strawlab/python-pcl/issues/155 用工具定位了一下,发现是OpenNI2.dll没找到,于是把C:\Program Files\OpenNI2\Samples\Bin,这个里面含有OpenNI2.dll, 添加到Path环境变量就行了(这一点已经在上面环境变量那一步修改完成了),至于为什么不建议安装到默认的C:\Program Files里面呢,因为这么操作完,只有在管理员模式下import pcl才不会报错,到普通的IDE里面就同样的报错,因为不开管理员,就没有权限使用系统文件夹里面的文件,盲生你终于发现了华点。

    如果修改了环境变量依然不能解决的话,找到D:\PCL_Project\PCL 1.8.1\3edParty\OpenNI2\OpenNI-Windows-x64-2.2.msi,双击运行,选择Repair后重启即可。

  • 相关阅读:
    C++的精髓——代码复用、接口复用
    静态库和动态库的区别和win平台和linux平台代码实现
    windows工程总结
    预编译头文件stdafx.h-stdafx.cpp-stdafx.pch(pre-compile headfile)
    linux调用库的方式
    Window 32位 编程总结
    读Zepto源码之内部方法
    读Zepto源码之代码结构
    再谈 javascript 数组去重
    把axios封装为vue插件使用
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/16834208.html
Copyright © 2020-2023  润新知