Ubuntu22.04体系源码编译OpenCV 4.10.0(包罗opencv_contrib)

宁睿  论坛元老 | 2024-12-5 08:59:56 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1083|帖子 1083|积分 3259

因项目需要使用不同版本的OpenCV,而当地的Ubuntu22.04体系装了ROS2自带OpenCV 4.5.4的版本,于是编译一个OpenCV 4.10.0(带opencv_contrib)版本,给特定的项目使用,这就不消换个设备后重新安装OpenCV 了,直接依赖编译好的包使用。
    PS:如需要直接在体系中安装OpenCV,可参考:https://blog.csdn.net/qq_45445740/article/details/142770493?spm=1001.2014.3001.5501
  
  
1.源码下载

   opencv:https://github.com/opencv/opencv
  

  • 选择4.10.0 的源码包进行下载

   opencv_contrib:https://github.com/opencv/opencv_contrib
  

  • 同样选择4.10.0 的源码包进行下载



  • 下载好后选择通过图形界面大概unzip命令进行解压,如下图所示:

2.情况准备

安装依赖
在开始之前,需要安装OpenCV编译过程中所需的依赖包。可以通过以下命令安装:
  1. sudo apt update
  2. sudo apt install build-essential cmake git pkg-config libjpeg-dev libtiff-dev libpng-dev libjasper-dev libdcmtk-dev
  3. sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
  4. sudo apt install libgtk-3-dev libcanberra-gtk3-dev libatlas-base-dev gfortran
  5. sudo apt install python3-dev python3-numpy
复制代码
3.源码编译

3.1 创建编译目次

在源码目次下创建一个新的构建目次用于编译:
  1. cd opencv/opencv-4.10.0
  2. mkdir build
  3. cd build
复制代码
3.2 配置CMake选项

使用CMake配置OpenCV的构建选项。需要指定OpenCV contrib模块的路径,并启用需要的功能(如Python绑定等)。
PS:CMAKE_INSTALL_PREFIX和OPENCV_EXTRA_MODULES_PATH需要指定编译后存放的路径和 contrib模块的路径。
  1. cmake -D CMAKE_BUILD_TYPE=Release \
  2.       -D CMAKE_INSTALL_PREFIX=/home/xxx/Documents/opencv/opencv-4.10.0/install \
  3.       -D OPENCV_EXTRA_MODULES_PATH=/home/xxx/Documents/opencv/opencv_contrib-4.10.0/modules \
  4.       -D BUILD_SHARED_LIBS=ON \
  5.       -D CMAKE_CXX_STANDARD=11 \
  6.       -D WITH_WEBP=OFF \
  7.       -D WITH_JPEG=ON \
  8.       -D WITH_TIFF=OFF \
  9.       -D BUILD_EXAMPLES=ON \
  10.       -D BUILD_PERF_TESTS=OFF \
  11.       -D BUILD_TESTS=OFF \
  12.       -D BUILD_opencv_apps=OFF \
  13.       -D WITH_CUDA=OFF \
  14.       -D BUILD_JAVA=OFF \
  15.       -D WITH_FFMPEG=OFF \
  16.       -D WITH_VTK=OFF \
  17.       -D OPENCV_ENABLE_NONFREE=ON ..
  18. # CMAKE_BUILD_TYPE=Release:编译类型为Release。
  19. # CMAKE_INSTALL_PREFIX=/opencv/opencv-4.10.0/install:指定安装目录。
  20. # OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-4.10.0/modules:指定OpenCV Contrib模块路径。
  21. # 其他选项根据需求启用或禁用特定功能。
复制代码
3.2.1 OpenCV的CMake选项说明

OpenCV的官方文档中列出了常见的CMake选项,以下是一些常见的构建选项:


  • 根本选项
  1. CMAKE_BUILD_TYPE=Release:选择编译类型,通常选择 Release,但也可以选择 Debug 进行调试编译。
  2. CMAKE_INSTALL_PREFIX:指定安装路径。
  3. WITH_CUDA=ON/OFF:启用/禁用CUDA支持(如果你的机器有NVIDIA显卡并且你希望加速计算)。
  4. WITH_OPENCL=ON/OFF:启用/禁用OpenCL支持。
  5. BUILD_EXAMPLES=ON/OFF:是否编译OpenCV示例。
  6. BUILD_opencv_python3=ON/OFF:是否构建Python 3绑定(如果需要在Python中使用OpenCV)。
  7. BUILD_TESTS=ON/OFF:是否编译单元测试。
复制代码


  • Contrib模块
  1. OPENCV_EXTRA_MODULES_PATH=path/to/opencv_contrib/modules:指定Contrib模块的路径。
  2. OPENCV_ENABLE_NONFREE=ON/OFF:启用/禁用一些额外的非免费模块(如SIFT和SURF)。
复制代码


  • 其他常见选项
  1. WITH_FFMPEG=ON/OFF:是否启用FFmpeg(用于处理视频文件)。
  2. WITH_GTK=ON/OFF:是否启用GTK图形界面(如果你需要GUI应用)。
  3. WITH_TBB=ON/OFF:启用Intel TBB(线程并行)。
  4. WITH_JPEG=ON/OFF:启用JPEG支持。
  5. WITH_PNG=ON/OFF:启用PNG支持。
复制代码
可以通过检察 CMakeLists.txt 或 OpenCV的官方GitHub仓库中的文档来获取完备的CMake选项列表。
3.2.2 办理编译过程中出现下载文件如IPPICV超时失败的题目


   办理方法:将需要下载的文件提前下好后放在指定的目次下,并改名。
  

  • 如下图所示,boostdesc_binboost_256.i下载不绝卡在这里,通过编译过程中的链接,提前将boostdesc_binboost_256.i文件下载好了放在opencv/opencv-4.10.0/.cache/xfeatures2d/boostdesc目次下,并修改为当前带commit命名的文件,删除原先的文件,重新再执行cmake指令。


很不幸,我替换了下面这么多。。。

   参考:https://www.cnblogs.com/ZhaoqunZhong/p/16579015.html
  3.3 编译

  1. make -j$(nproc)
  2. # -j$(nproc) 会让编译使用所有可用的CPU核心,以加快编译速度
复制代码
3.4 安装编译后的产物

编译完成后,使用以下命令将编译效果安装到指定目次:
  1. make install
复制代码
安装完成后,OpenCV将被安装到 opencv/opencv-4.10.0/install 目次下。

3.5 打包编译后的库

将install目次打包生成压缩包:libopencv-4.10.0-Linux-x86_64.zip lib
这样可以将这个压缩包拷贝到其他设备上以便在其他地方使用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表