CMake构建学习条记13-opencv库的构建

打印 上一主题 下一主题

主题 571|帖子 571|积分 1713

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,旨在提供一个跨平台的、易于利用的、快速实行的计算机视觉接口。如果只是简单的利用,其实不须要像笔者这样利用源代码进行构建,直接利用官方提供的二进制安装包即可。一般来说,需要从源代码进行构建的缘故原由有以下几种:

  • 由于C/C++构建成果的二进制兼容问题,官方提供的安装包或者预编译包比肯定可以或许适配你的编程环境,有的环境也不太大概找到安装包,好比嵌入式、信创。
  • 构建的成果不肯定是你需要的构建范例,例如构建RelWithDebInfo范例。个人认为传统的Debug和Release模式好像不能满足于目前软件测试能力退化环境了,反而RelWithDebInfo范例更实用一点。例如OpenCV的Release其实就是RelWithDebInfo,由于它同时生成了符号库文件。
  • 官方提供的安装包或者预编译包不肯定有符号库,符号库对于Debug调试非常重要,它可以让我们看到代码文件,让我们知道出问题的具体地方在那里。虽然说依靠库的bug我们一般改不了,但是可以给我们一点提示让我们正确地调用依靠库,制止崩溃。
笔者构建的是OpenCV的3.4.16版本,这也是OpenCV3.X的最新版本,关键构建指令如下所示:
  1. # 配置阶段,指定生成器、平台和安装路径
  2. cmake .. -G "$Generator" -A x64 `
  3.     -DCMAKE_BUILD_TYPE=Release `
  4.     -DCMAKE_PREFIX_PATH="$env:GISBasic" `
  5.     -DCMAKE_INSTALL_PREFIX="$InstallDir" `
  6.     -DBUILD_opencv_world=ON `
  7.     -DWITH_GDAL=OFF `
  8.     -DWITH_FFMPEG=OFF `
  9.     -DWITH_IPP=OFF `
  10.     -DBUILD_TESTS=OFF `
  11.     -DBUILD_PERF_TESTS=OFF `
  12.     -DBUILD_opencv_python_tests=OFF `
  13.     -DBUILD_opencv_python_bindings_generator=OFF `
  14.     -DBUILD_JAVA=OFF `
  15.     -DBUILD_opencv_java=OFF `
  16.     -DBUILD_opencv_java_bindings_generator=OFF `
  17.     #-DBUILD_ZLIB=OFF `
  18.     #-DBUILD_JPEG=OFF `
  19.     #-DBUILD_PNG=OFF `
  20.     #-DBUILD_TIFF=OFF `
  21.     #-DWITH_PROTOBUF=ON `
  22.     #-DBUILD_PROTOBUF=ON `
  23.     #-DPROTOBUF_UPDATE_FILES=OFF `
  24. # 构建阶段,指定构建类型
  25. cmake --build . --config Release
  26. # 安装阶段,指定构建类型和安装目标
  27. cmake --build . --config Release --target install
复制代码
OpenCV具有大量的构建选项,读者可以按需进行构建:

  • -DBUILD_opencv_world=ON表示将OpenCV的所有模块合并成一个名为opencv_world3416的库。
  • -DWITH_GDAL=OFF、-DWITH_FFMPEG=OFF、-DWITH_IPP=OFF像GDAL、FFMPEG这样的都是非常大型的库,如果临时用不到功能的话就先不用到场构建了。
  • 其他以“BUILD”开头的选项都是测试、案例、或者其他语言的绑定什么的,如果不需要也不要进行构建了。
  • OpenCV其实也用到了像zlib、libpng、libjpeg、libtiff等等前面已经构建好的库,如果像BUILD_ZLIB=OFF这样设置,构建OpenCV的时间就会利用已经构建好的库,而不是从OpenCV内部提供的代码重新构建。不外问题在于OpenCV还依靠于protobuf,谷歌的库是另外一套风格,构建出来问题多多,读者就不用尝试了,还是都从OpenCV内部提供的代码重新构建的好。

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

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表