• OpenCV中world模块介绍


          OpenCV中有很多模块,模块间保持最小的依赖关系,用户可以根据自己的实际需要链接相关的库,而不需链接所有的库,这样在最终交付应用程序时可以减少总库的大小。但如果需要依赖OpenCV的库太多,有时会带来不方便,此时可以使用OpenCV的world模块。

          OpenCV中的world模块,也称为超级模块(super-module),它结合了用户选择的所有其它模块。它是一个一体化(all-in-one)模块,具有所有库的功能。使用world模块可能会使应用程序的编译时间略有增加。

          目前OpenCV最新发布版本为4.8.1,编译不带world模块的动态库,在windows下会有58个动态库。在windows上使用vs2022及在linux上使用g++ 9的脚本build.sh如下所示:

    1. #! /bin/bash
    2. if [ $# != 2 ]; then
    3. echo "Error: requires two parameters: 1: windows or linux; 2: relese or debug"
    4. echo "For example: $0 windows debug"
    5. exit -1
    6. fi
    7. if [ $1 != "windows" ] && [ $1 != "linux" ]; then
    8. echo "Error: the first parameter can only be windows or linux"
    9. exit -1
    10. fi
    11. if [ $2 != "release" ] && [ $2 != "debug" ]; then
    12. echo "Error: the second parameter can only be release or debug"
    13. exit -1
    14. fi
    15. if [[ ! -d "build" ]]; then
    16. mkdir build
    17. cd build
    18. else
    19. cd build
    20. fi
    21. if [ $1 == "windows" ] && [ $2 == "release" ]; then
    22. cmake \
    23. -G"Visual Studio 17 2022" -A x64 \
    24. -DCMAKE_BUILD_TYPE=Release \
    25. -DCMAKE_CONFIGURATION_TYPES=Release \
    26. -DBUILD_SHARED_LIBS=ON \
    27. -DBUILD_opencv_world=ON \
    28. -DBUILD_PERF_TESTS=OFF \
    29. -DBUILD_TESTS=OFF \
    30. -DCMAKE_INSTALL_PREFIX=../install_4.8.1/ \
    31. -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
    32. ..
    33. cmake --build . --target install --config release
    34. fi
    35. if [ $1 == "windows" ] && [ $2 == "debug" ]; then
    36. cmake \
    37. -G"Visual Studio 17 2022" -A x64 \
    38. -DCMAKE_BUILD_TYPE=Debug \
    39. -DCMAKE_CONFIGURATION_TYPES=Debug \
    40. -DBUILD_SHARED_LIBS=ON \
    41. -DBUILD_opencv_world=ON \
    42. -DBUILD_PERF_TESTS=OFF \
    43. -DBUILD_TESTS=OFF \
    44. -DCMAKE_INSTALL_PREFIX=../install_4.8.1/ \
    45. -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
    46. ..
    47. cmake --build . --target install --config debug
    48. fi
    49. if [ $1 == "linux" ] && [ $2 == "release" ]; then
    50. cmake \
    51. -DCMAKE_C_COMPILER=/usr/bin/gcc-9 \
    52. -DCMAKE_CXX_COMPILER=/usr/bin/g++-9 \
    53. -DCMAKE_BUILD_TYPE=Release \
    54. -DBUILD_SHARED_LIBS=ON \
    55. -DBUILD_opencv_world=ON \
    56. -DBUILD_PERF_TESTS=OFF \
    57. -DBUILD_TESTS=OFF \
    58. -DCMAKE_INSTALL_PREFIX=../install_4.8.1/release/ \
    59. -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
    60. ..
    61. make -j4
    62. make install
    63. fi
    64. if [ $1 == "linux" ] && [ $2 == "debug" ]; then
    65. cmake \
    66. -DCMAKE_C_COMPILER=/usr/bin/gcc-9 \
    67. -DCMAKE_CXX_COMPILER=/usr/bin/g++-9 \
    68. -DCMAKE_BUILD_TYPE=Debug \
    69. -DCMAKE_CONFIGURATION_TYPES=Debug \
    70. -DBUILD_SHARED_LIBS=ON \
    71. -DBUILD_opencv_world=ON \
    72. -DBUILD_PERF_TESTS=OFF \
    73. -DBUILD_TESTS=OFF \
    74. -DCMAKE_INSTALL_PREFIX=../install_4.8.1/debug/ \
    75. -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
    76. ..
    77. make -j4
    78. make install
    79. fi
    80. rc=$?
    81. if [[ ${rc} != 0 ]]; then
    82. echo "Error: please check: ${rc}"
    83. exit ${rc}
    84. fi

          在windows上编译结果如下所示:

          在Linux上编译结果如下所示:

          GitHubhttps://github.com/fengbingchun/OpenCV_Test

  • 相关阅读:
    About Covariance and Correlation(协方差和相关)
    【Y 码力】WAL 与性能
    NDK 是什么 | FFmpeg 5.0 编译 so 库
    java学习part03基本类型
    AIGC入门 - LLM 信息概览
    Logstash、Mysql、Elasticsearch实现数据互通
    一文讲清楚Java面向对象的继承关系
    Android 12(S) 图像显示系统 - SurfaceFlinger 之 VSync - 上篇(十六)
    国赛高教杯使用python/matlab必会算法数学建模-回归分析模块(课程6)
    Linux学习第15天:Linux设备树(二):枝繁叶茂见晴天
  • 原文地址:https://blog.csdn.net/fengbingchun/article/details/133964466