当前位置: 首页 > java >正文

c++ 调用opencv或pcl流程

以下是一个基于C++和OpenCV调用PCL(Point Cloud Library)的教程,主要介绍如何在Ubuntu环境下配置和使用PCL与OpenCV:

环境准备

  1. 安装依赖库
    在Ubuntu系统中,运行以下命令安装必要的依赖库:

    sudo apt-get install build-essential
    sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    sudo apt-get install python-dev python-numpy python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
    sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
    sudo apt update
    sudo apt install libjasper1 libjasper-dev
    
  2. 安装OpenCV

    • 下载OpenCV和OpenCV_contrib源码:
      wget https://github.com/opencv/opencv/archive/4.5.3.zip -O opencv-4.5.3.zip
      wget https://github.com/opencv/opencv_contrib/archive/4.5.3.zip -O opencv_contrib-4.5.3.zip
      unzip opencv-4.5.3.zip
      unzip opencv_contrib-4.5.3.zip
      mv opencv_contrib-4.5.3 opencv-4.5.3/opencv_contrib
      
    • 编译OpenCV:
      cd opencv-4.5.3
      mkdir build && cd build
      sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 \-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/ -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_ENABLE_NONFREE=True ..
      sudo make -j$(nproc)
      sudo make install
      
  3. 安装PCL

    • 使用系统包管理器安装PCL:
      sudo apt-get install libpcl-dev
      

配置项目

  1. 创建项目目录结构
    创建一个C++项目目录,例如:

    cpp_project
    ├── .vscode
    │   ├── c_cpp_properties.json
    │   ├── launch.json
    │   └── tasks.json
    ├── build
    ├── CMakeLists.txt
    ├── include
    │   ├── func_common.h
    │   ├── func_opencv.h
    │   └── func_pcl.h
    └── src├── func_common.cpp├── func_opencv.cpp├── func_pcl.cpp└── main.cpp
    
  2. 配置CMakeLists.txt
    编写CMakeLists.txt文件以配置项目:

    cmake_minimum_required(VERSION 2.8)
    project(MyProject)# 添加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 "/usr/local/opencv4")
    find_package(OpenCV REQUIRED)
    include_directories(${OpenCV_INCLUDE_DIRS})
    link_directories(${OpenCV_LIB_DIR})# 添加源文件
    aux_source_directory(src DIR_SRCS)
    add_executable(MyProject ${DIR_SRCS})# 链接库
    target_link_libraries(MyProject ${PCL_LIBRARIES} ${OpenCV_LIBS})
    
  3. 编写代码
    main.cpp中编写代码,结合OpenCV和PCL的功能。例如:

    #include <opencv2/opencv.hpp>
    #include <pcl/point_cloud.h>
    #include <pcl/point_types.h>
    #include <pcl/io/pcd_io.h>int main() {// 使用OpenCV读取图像cv::Mat image = cv::imread("test.jpg");cv::imshow("Image", image);cv::waitKey(0);// 创建PCL点云pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);cloud->width = 5;cloud->height = 1;cloud->is_dense = false;cloud->points.resize(cloud->width * cloud->height);for (size_t i = 0; i < cloud->points.size(); ++i) {cloud->points[i].x = 1024.0f * rand() / (RAND_MAX + 1.0f);cloud->points[i].y = 1024.0f * rand() / (RAND_MAX + 1.0f);cloud->points[i].z = 1024.0f * rand() / (RAND_MAX + 1.0f);}// 保存点云pcl::io::savePCDFileASCII("test.pcd", *cloud);std::cout << "Saved point cloud to test.pcd" << std::endl;return 0;
    }
    
  4. 编译和运行
    在项目根目录下运行以下命令:

    cd build
    cmake ..
    make
    ./MyProject
    

注意事项

  • 确保OpenCV和PCL的路径正确配置在CMakeLists.txt中。
  • 如果使用VSCode开发,需要在.vscode/c_cpp_properties.json中添加OpenCV和PCL的头文件路径。

通过以上步骤,你可以在C++中结合使用OpenCV和PCL,实现图像处理和点云处理的功能。

http://www.xdnf.cn/news/9429.html

相关文章:

  • 【Tomcat】Tomcat端口仅允许本地访问设置方法
  • 接地气的方式认识JVM(一)
  • i2c-tools使用的介绍及示例(i2cdetect,i2cdump, i2cget、i2cset、i2ctransfer)
  • 解决微信小程序中 Flex 布局下 margin-right 不生效的问题
  • 通用大数据可视化展示平台模板 – 免费HTML源码
  • 聊聊JVM怎么调优?(实战总结)
  • 【Doris基础】Apache Doris中FE和BE的职责详解
  • 端午节互动网站
  • 学习threejs,超炫银河黑洞效果模拟
  • 【Halcon】 affine_trans_image 算子详解
  • vue组件和插件的区别
  • Kafka KRaft + SSL + SASL/PLAIN 部署文档
  • 【剑指offer】链表 系列
  • 万字详解RTR RTSP SDP RTCP
  • DeepSeek R1模型已完成小版本试升级
  • Unity屏幕适配——背景适配
  • leetcode 3372. 连接两棵树后最大目标节点数目 I
  • P8-大模型微调
  • Day05
  • Vuer开源程序 是一个轻量级的可视化工具包,用于与动态 3D 和机器人数据进行交互。它支持 VR 和 AR,可以在移动设备上运行。
  • Ethan的日记5/28
  • leetcode0670. 最大交换-medium
  • 让 Deepseek GPS测速
  • 电脑革命家测试版:硬件检测,6MB 轻量无广告 清理垃圾 + 禁用系统更新
  • Oracle Linux 9 安装 EMCC 13.5:避坑细节与实战经验汇总!
  • GO——内存逃逸分析
  • Flutter、React Native、Unity 下的 iOS 性能与调试实践:兼容性挑战与应对策略(含 KeyMob 工具经验)
  • 云服务器是什么,和服务器有什么区别?
  • 系统赛数据库的一些记录
  • 【华为开发者空间 x DeepSeek】服务器运行Ollama并在本地调用