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

2023-11-11

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

PCL 源码编译安装:

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

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

一般编译(然而我们不这么编译,看下一条):

cmake -DCMAKE_BUILD_TYPE=Release ..

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

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个核心编译:

make -j6

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

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_DEFINITIONS})

因为我们把pcl-1.8安装到了一个新的位置,没有覆盖安装系统原来的pcl-1.7,因此是可以共存的。使用源码编译安装的pcl-1.8的时候,只需要如上修改PCL_DIR即可。

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

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

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

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

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_DEFINITIONS})

参考
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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu14/16 PCL1.7/1.8 opencv2/3/4 编译安装共存 的相关文章

  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • gentoo crontab:为什么这个简单的 crontab 不起作用?

    我使用 GENTOO 发行版 crontab e 35 12 root php5 home www cron php 当我手动运行时 php5 php5 home www cron php 这有效 它向我发送了一封电子邮件 然后我检查日期
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • Linux shell 脚本中的 while 循环超时

    这工作正常 无限循环 while TRUE do printf done 我在尝试着timeout this while loop与timeout命令 所有这些都不起作用 timeout 5 while TRUE do printf don
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • VS 程序在调试模式下崩溃,但在发布模式下不崩溃?

    我正在 VS 2012 中运行以下程序来尝试 Thrust 函数查找 include cuda runtime h include device launch parameters h include
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然

随机推荐

  • Response.setContentType对应的类型大全

    Response setContentType MIME 的作用是时客户端的浏览器区分不同种类的数据 并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据 MIME的作用 由于MIME类型与文档的后缀相关 因此服务器使用文档的
  • MySQl心得4--5--数据库视图

    1 修改 查询 删除记录时都会提示多少条记录被影响 但建表不会提示 当表的数据修改后反映到视图 修改 查询 删除视图的命令跟建表时的一样 视图是从一个或多个表 或视图 导出的表 视图是数据库的用户使用数据库的观点 可以根据他们的不同需求 在
  • Jmeter做接口测试-面试题

    一 请说明你用Jmeter做接口测试的整体过程 用Jmeter做接口测试 至少要经过以下几步 1 根据开发提供的接口文档 编写接口测试用例 2 利用JMeter做接口测试 添加线程组和HTTP请求 在HTTP请求中 添加对应的ip地址 端口
  • http连接处理(下)(四)

    1 结合代码分析请求报文响应 下面我们将介绍服务器如何响应请求报文 并将该报文发送给浏览器端 首先介绍一些基础API 然后结合流程图和代码对服务器响应请求报文进行详解 基础API部分 介绍stat mmap iovec writev 流程图
  • CRC算法并行运算Verilog实现

    因为CRC循环冗余校验码的算法和硬件电路结构比较简单 所以CRC是一种在工程中常用的数据校验方法 尽管CRC简单 但在工程应用中还是有些问题会对工程师产生困惑 这篇文章将介绍一下CRC 希望对大家有所帮助 一 CRC算法介绍 CRC校验原理
  • Visual Studio安装时,不能更改共享组件、工具和SDK的位置

    之前安装的时候把安装路径改了 之后卸载不干净 注册表还留有缓存 不能更改位置 如下图 微软官方提供的卸载工具 TotalUninstaller 卸载不干净可以用这个工具 解决办法 更改注册表 HKEY LOCAL MACHINE SOFTW
  • KNN算法分类问题实现介绍和使用

    KNN算法详解 sklearn包介绍 一 sklearn包使用KNN算法 1 准备数据 X np array 5 1 3 5 1 4 0 2 4 9 3 1 4 0 2 4 7 3 2 1 3 0 2 4 6 3 1 1 5 0 2 5 3
  • uniapp的websocket的使用

    1 websocket的封装 uniapp获取websocket返回来的数据可以采用Vuex进行存储 class websocketUtil constructor url time url 是请求的后端的地址 time 是心跳包的时间 t
  • 【MAC终端UI自动化】获取当前最前端的应用程序

    目的 在操作当前应用后 弹出一个系统弹窗 想定位到这个弹窗 方法一 没搞定 期待大佬解答 想到atomac有个获取当前最前端的应用程序的方法getFrontmostApp a atomac getFrontmostApp print a 返
  • Proxy error: Could not proxy request... 问题解决

    背景 最近在项目中发现一个问题 每次npm run serve 时都是正常的 每次重新编译后就会有下面的提示 Proxy error Could not proxy request Manage repairDelivery settlem
  • cppkafka是什么 和librdkafka关系

    最近日志审计对接日志中心的开发 需要设计kafka相关的一些东西 因此了解了一些 在github 的 kafka官网上看到有 Language bindings 不太清楚其中的 cppkafka 是什么东西 能用来做什么 多方了解后才明白
  • C语言树莓派PICO,RP2040(树莓派Pico) PIO – 实例分析&编程

    这次拿来开刀的是WS2812 具体代码可见 gt https github com raspberrypi pico examples blob master pio ws2812 ws2812 pio program ws2812 sid
  • 什么是边缘计算网关?

    边缘计算网关 简称 边缘网关 将云端功能扩展到本地的边缘设备 使边缘设备能够快速自主地响应本地事件 提供低延时 低成本 隐私安全 本地自治的本地计算服务 同时所有服务都以 Docker 镜像方式安装 真正做到了跨平台 部署快捷 易管理 在链
  • MYSQL----union与limit

    union 1 union操作符用于合并两个或多个 SELECT 语句的结果集 2 union内部的 SELECT 语句必须拥有相同数量的列 列也必须拥有相似的数据类型 同时 每条 SELECT 语句中的列的顺序必须相同 limit 1 l
  • Jmeter使用篇(六) : Jmeter集合点

    配置Jmeter集合点的方法 1 需要设置集合点 进行并发同步 则需要在请求之前进行集合点的设置 具体位置在 添加 定时器 Synchronizing Timer 同步定时器
  • 01-LED-Blink-Demo(开发环境esp-idf)

    Blink Example This example code is in the Public Domain or CC0 licensed at your option Unless required by applicable law
  • 使用 STM32 的 SPI 来读取外部 SPI FLASH 芯片(W25Qxx)

    SPI简介 SPI 是英语 Serial Peripheral interface 的缩写 顾名思义就是串行外围设备接口 是 Motorola 首先在其 MC68HCXX 系列处理器上定义的 SPI 接口主要应用在 EEPROM FLASH
  • LeetCode刷题笔记:1619.删除某些元素后的数组均值

    1 问题描述 给你一个整数数组 arr 请你删除最小 5 的数字和最大 5 的数字后 剩余数字的平均值 与 标准答案 误差在 10 5 的结果都被视为正确结果 2 解题思路 先排序 再从数组下标5 处开始遍历 到数组下标95 截止 3 代码
  • 设计模式1:单例模式、工厂、创建者、原型

    设计模式 一种抽象 总结 Gang of Four GOF 分类 3大类23种 创建型模式 结构型模式和行为型模式 几个设计原则 接口分离 依赖倒置 原则 编程面向接口而不是实现 单一原则 单一部分完成特定的分类功能 封装 开闭原则 对修改
  • Ubuntu14/16 PCL1.7/1.8 opencv2/3/4 编译安装共存

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