解决PCL和OpenCV中flann库冲突的问题(Ubuntu20.04+VSCode)

这篇具有很好参考价值的文章主要介绍了解决PCL和OpenCV中flann库冲突的问题(Ubuntu20.04+VSCode)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解决PCL和OpenCV中flann库冲突的问题

做视觉处理,尤其是三维视觉和点云处理等,基本都离不开这俩大库,以前要么单独用OpenCV做二维,要么纯用PCL做点云后处理。因为准备把学习期间的代码整合起来,所以需要同时使用两个库,结果发现flann库冲突的问题🤪
查阅了一下网上的方案,基本有几种方案

  • 1.建议改调用的flann头文件路径(要改全部的也太夸张了,要改用到的又不确定用到了哪些😅)
  • 2.或者用不同的命名空间规避(根本没用到flann相关的函数就冲突了😕)
  • 3.修改OpenCV中的flann文件夹名(相对靠谱点🤣)

方法1:修改OpenCV中的flann文件夹名

如果只打算使用PCL的flann库,可以通过修改OpenCV库中的flann文件夹名避免,但是治标不治本, 没有真正解决问题,只是解决了有问题的库 🙃

执行如下两步,进入路径,更改名称,解决!(记得备份或者以后用的时候能想起改回来😶)

cd /usr/local/opencv4/include/opencv4/opencv2
sudo mv flann/ flann2/

方法2:通过增加Cmake文件解决问题

索性直接搜索Ubuntu20.04+PCL+OpenCV环境的配置经验,还真研究出一些规律,大部分跑起来而且不提到flann库冲突问题的博客或者文章都是增加CMakeLists.txt文件实现的,然后就是昏天黑地的配置和试错时间😇

首先新建文件结构如下(直接把自己的放上来不是为了偷懒 ,如果有好心人可以推荐更精简或者更方便的文件结构那就太好辣🤡)

cpp
├── .vscode
│   ├── c_cpp_properties.json
│   ├── launch.json
│   └── tasks.json
├── build
│   └── bin
│       ├── Linx
│       └── data
├── CMakeLists.txt
├── data 
├── include
│   ├── func_common.h
│   ├── func_opencv.h
│   └── func_pcl.h
└── src
    ├── func_common.cpp
    ├── func_opencv.cpp
    ├── func_pcl.cpp
    └── main.cpp

需要的文件内容如下

1. CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(Linx)

# ========================================
# === 构建静态库以加速
# ========================================
set(COMMON_SOURCES src/func_common.cpp src/func_pcl.cpp src/func_opencv.cpp)

add_library(Func STATIC ${COMMON_SOURCES})

if(UNIX)
  target_link_libraries(Func pthread)
endif()

# ========================================
# === PCL库
# ========================================
find_package(PCL 1.8 REQUIRED)
    include_directories(${PCL_INCLUDE_DIRS})
    link_directories(${PCL_LIBRARY_DIRS})
    add_definitions(${PCL_DEFINITIONS})

# ========================================
# === OpenCV库
# ========================================
# 记得替换自己的路径
set(OpenCV_DIR "~/libs/opencv-4.5.3/build/")
find_package(OpenCV REQUIRED)
if (NOT OpenCV_FOUND)
    message(FATAL_ERROR "OpenCV library not found")
else()
    include_directories(${OpenCV_INCLUDE_DIRS})
    include_directories(${OpenCV2_INCLUDE_DIRS})
    link_directories(${OpenCV_LIB_DIR})

endif()

    
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build/bin)

aux_source_directory(./src/ DIR_SRCS)

add_executable(Linx  ${DIR_SRCS})

set_target_properties(Linx PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)

target_link_libraries(Linx
${ABSOLUTE_TARGET_LIB} ${PCL_LIBRARIES} libpthread.so  ${OpenCV_LIBS} Func ${CLOUD_VIEWER} 
)

2. .vscode/c_cpp_properties.json

{
  "configurations": [
      {
          "name": "Linux",
          "includePath": [
              "${workspaceFolder}/**",
              "/usr/include",
              "/usr/include/**",
              "/usr/include/x86_64-linux-gnu/sys",
              // 检查pcl路径
              "/usr/include/pcl-1.10",
              "/usr/include/eigen3",
              "/usr/include/eigen3/Eigen/", 
              "/usr/include/vtk-7.1",   
              "/usr/include/qhull",
              "/usr/include/flann",
              "/usr/include/boost",
              // 检查opencv路径
              "/usr/local/opencv4/include/opencv4"
          ],
          "defines": [],
          "compilerPath": "/usr/bin/gcc",
          "cStandard": "${default}",
          "cppStandard": "${default}",
          "intelliSenseMode": "linux-gcc-x64"
      }
  ],
  "version": 4
  }

3. .vscode/launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/bin/Linx",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Build",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

4. .vscode/tasks.json

{   
    "version": "2.0.0",
    "options": {
        "cwd": "${workspaceFolder}/build"
    },
    "tasks": [
        {
            "type": "shell",
            "label": "cmake",
            "command": "cmake",
            "args": [
                ".."
            ]
        },
        {
            "label": "make",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command": "make",
            "args": [

            ]
        },
        {
            "label": "Build",
            "dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
            "dependsOn":[
                "cmake",
                "make"
            ]
        }
    ]
}

配置好以上文件之后,就又可以愉快的写BUG啦!(不是 ) 😑文章来源地址https://www.toymoban.com/news/detail-618968.html

到了这里,关于解决PCL和OpenCV中flann库冲突的问题(Ubuntu20.04+VSCode)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PCL】ubuntu20.04安装 VTK7.1与PCL1.8(PCL依赖VTK,要先装且最好源码安装)

    Ref: 源码安装 (apt安装的方式会出现.so文件缺失的情况!!!)) ubuntu16.04 安装Qt5 + VTK7.1.1 + PCL1.8.0 第二部分 Ubuntu20.04安装VTK 下载 下载地址 依赖安装 VTK安装 方法一出现的错误: make过程中出现的 错误: Could not find  a package configuration file provided by \\\"Qt5X11Extras\\\" with any of the followi

    2024年02月03日
    浏览(46)
  • 解决Ubuntu20.04安装CUDA-11.2报256错误的问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 最近在给一台Ubuntu20.04的电脑装cuda-11.2版本的时候遇到了些错,经过一些列研究终于解决了这个问题。我记录了下来,希望情况和我一样的小伙伴可以解决这个问题。 报错的原因可以说是内核,也可以说

    2024年02月15日
    浏览(73)
  • Ubuntu 20.04-NVIDIA显卡驱动-安装和卸载-解决黑屏问题

    202300704更新,黑屏问题主要由linux内核更新导致 20230706 22:46 更新:好像这一步也没有用!!! The PCI ID Repository可以按照十六进制数字代码找到相应的显卡型号。 按照显卡型号下载驱动 (ctrl+鼠标点击-》跳转)下载官网建议的.run文件,下载完成后移动到主目录。 推荐直接在ub

    2024年02月12日
    浏览(92)
  • 【Linux】Ubuntu20.04 无法访问 http://cn.archive.ubuntu.com 问题记录解决

    您希望继续执行吗? [Y/n] Y 错误:1 http://cn.archive.ubuntu.com/ubuntu focal/universe amd64 binfmt-support amd64 2.2.0-2 无法发起与 cn.archive.ubuntu.com:80 (2001:67c:1562::18) 的连接 - connect (101: 网络不可达) 无法发起与 cn.archive.ubuntu.com:80 (2001:67c:1562::15) 的连接 - connect (101: 网络不可达) 无法连接上 cn.ar

    2024年02月06日
    浏览(52)
  • Ubuntu20.04安装sql server(内含多个可能遇到的问题以及解决方法)

    这学期的课程有数据库,因此今天(2022.3.6)在ubuntu上安装了sql server2019 即使根据官方指引进行安装也会遇到不少问题,因此为在这里总结了我自己遇到的所有问题,以及给出了相应的解决方案,希望能为后来的人解决一些困惑和麻烦 根据指引,在终端输入第一条语句:(导入

    2024年02月05日
    浏览(58)
  • Ubuntu20.04安装OpenCV

    开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。 OpenCV的应用领域包括:2D和3D功能工具包、运动估计、面部识别系统、手势识别、人机交互、移动机器人、动作理解、物体识别、分割和识别、实体影像立体视觉:来自两个摄像机的深度感知、运动跟踪、增强

    2023年04月09日
    浏览(53)
  • ubuntu 20.04 使用 webrtc-streamer自动退出,报错GLIBC 问题解决方法

    前端vue2 项目需要播放海康的视频流,本地启动起来了,现在需要的服务器上部署,服务器是Ubuntu 20.04,下面是部署时遇到的问题及解决方法,总耗时2天。 不知道怎么在Ubuntu中部署前端项目的可以去看我之前几篇文章。 【vue2】前端如何播放rtsp 视频流,拿到rtsp视频流地址如

    2024年01月24日
    浏览(60)
  • (问题解决)(自制脚本)Ubuntu20.04 键盘会突然失灵、键盘延迟突然很大怎么办

    最近在写毕业论文,代码在ubuntu上跑的,得一边跑代码,一边写论文。但用一段时间,或者电脑静置一段时间后,键盘输入延迟突然变得很大,这期间鼠标是正常的,只是输不了字,得等几分钟才能恢复正常,非常耽误时间。 后来参考下面这篇博客,说是ibus拼音输入法的问

    2024年02月10日
    浏览(65)
  • 在 Ubuntu 20.04 上安装 OpenCV

    OpenCV 在 Ubuntu 20.04 软件源中可用。想要安装它,运行: 上面的命令将会安装所有必要的软件包,来运行 OpenCV: 通过导入 cv2 模块,并且打印 OpenCV 版本来验证安装结果: 输出: 1.安装构建工具和所有的依赖软件包: 2.克隆所有的OpenCV 和 OpenCV contrib 源 3.下载完成,创建一个临

    2024年01月23日
    浏览(47)
  • ubuntu20.04安装opencv4库

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 opencv官方网站:https://opencv.org/releases/ 终端输入: 在最下面添加: 若显示如下,则成功安装。 上述步骤运行无误后,基本完成了 opencv 4 的安装,接下来使用以下命令验证: 问题解析: 未安装apache an

    2024年02月21日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包