Ubuntu14/16 PCL1.7/1.8 opencv2/3/4 编译安装共存

为了使用cuda和pcl共同编程,而系统带的pcl1.7不带gpu模块,故编译安装pcl彻底版,与系统pcl1.7共存,不一样分发版本Ubuntu应该没有什么区别,不一样版本pcl编译和使用道理也都基本相同,opencv也是同样的道理。html

PCL 源码编译安装:

这里以pcl-1.8为例,其余版本可在GitHub上pcl代码仓库的release处下载源码。
从GitHub克隆源码,创建build文件夹准备编译:python

git clone https://github.com/PointCloudLibrary/pcl.git
cd pcl
mkdir build
cd build

通常编译(然而咱们不这么编译,看下一条):linux

cmake -DCMAKE_BUILD_TYPE=Release ..

指定gpu功能的编译,并指定安装文件位置为“/home/ziqi/pcl-1.8”:git

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/ziqi/pcl-1.8 -DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON ..

根据cpu核心数目不一样,选择编译使用的-j选项,如使用6个核心编译:github

make -j6

编译后安装到以前指定的文件夹(即“/home/ziqi/pcl-1.8”)web

sudo make -j6 install
由于咱们把pcl-1.8安装到了 “/home/ziqi/pcl-1.8”,因此任何程序调用pcl-1.8库,都要在CMakeLists.txt里设置PCLConfig.cmake这个文件所在目录,以后才能在CMakeLists.txt里面使用find_package(),其中,PCL_DIR的值是PCLConfig.cmake这个文件所在的目录。
set(PCL_DIR "/home/ziqi/pcl-1.8/share/pcl-1.8")
find_package(PCL 1.8 REQUIRED COMPONENTS)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINATIONS})

由于咱们把pcl-1.8安装到了一个新的位置,没有覆盖安装系统原来的pcl-1.7,所以是能够共存的。使用源码编译安装的pcl-1.8的时候,只须要如上修改PCL_DIR便可。编程

cuda pcl混合编程的一个例子可使用我测试使用的代码:测试代码ubuntu

参考
https://www.vtk.org/Wiki/VTK/Building/Linux
http://blog.csdn.net/wanguku/article/details/60476469?readlogapp

opencv3.2&opencv3.2-contribute 源码编译安装:

下载源码,解压缩,好比解压后的文件夹为“opencv-3.2.0”:
创建build文件夹准备编译:svg

cd /opencv-3.2.0
rm -rf build
mkdir build
cd build

编译两个包,指明安装位置,默认为/usr/local,指明opencv3.2-contribute模块位置:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=path to opencv_contrib-3.2.0/modules/ ..

只编译opencv3.2:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..

根据cpu核心数目不一样,选择编译使用的-j选项,如使用6个核心编译:

make -j6

安装:

sudo make -j6 install
若是没有安装在默认/usr/local,好比安装在/usr/local/opencv320,则任何程序调用opencv库,都要在CMakeLists.txt里设置OpenCVConfig.cmake这个文件所在目录,以后才能在CMakeLists.txt里面使用find_package()。
set(OpenCV_DIR  "/usr/local/opencv320/share/OpenCV/")
find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINATIONS})

参考 http://blog.csdn.net/lql0716/article/details/54564721 https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html https://www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-python-2-7-on-ubuntu