提升OpenCV编译速度的方法

由于各种地方需要使用opencv,有windows/ubuntu/树莓派等,多次编译opencv源码,每次时间很长,也总结了一些提高编译速度的方法。本文以opencv4和ubuntu16为例。

0. 参考链接

learn opencv: https://www.learnopencv.com
这个网站基本能够找到各种环境下安装opencv,c++/python的教程。更新速度较快,也比较全面。

1. 明确需求

在编译OpenCV前,需要明确一个问题,我需要用opencv的什么功能?

  1. 如果是基础功能,只需要编译opencv的基础代码即可;
  2. 如果需要附加功能,好像从opencv3起,新增了opencv_contrib,把一些功能分了出来,如果需要用到里面的,需要编译opencv时加上。
  3. 如果只需要用到contrib_modules中的部分功能,则把其它的编译关掉。

2. 具体做法

2.1 多线程编译

make -j4

这个是最常用的加速的方法了,即采用4线程编译。这个数也不是越大越好,一般电脑也就是4线程。如果用8或者16,可以发现用top指令看ubuntu内存时虽然有多个线程在编译,但cpu是平分的。所以4比较合理。

2.2 编译contrib时下载文件速度慢

当需要使用contrib时,如果全部contrib的modules都加载,则需要下载许多文件,其中下载速度最慢的是:face_landmark_model.dat,往往下载这个时会超时。解决办法呢:手动下载,并修改contrib中的配置。具体如下。

  1. 下载face_landmark_model.dat
  2. 修改以下文件的第19行,
vim opencv_contrib-4.x.x/modules/face/CMakeLists.txt	#打开文件
# 修改为:
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"
"file://where/you/download/face_landmakr_model"

然后再去编译即可。

2.3 关掉测试文件、性能文件的编译

编译过程中,如果直接进行cmake后make,则会编译出一堆测试文件(_test_xxx)和性能测试文件(_perf_xxx),以及一些example例子。这些我觉得没用,可以在编译时关掉。
不建议在cmake时以-D的方式修改参数,毕竟谁能记住这么多呢。建议采用cmake后使用ccmake修改。https://blog.csdn.net/tfb760/article/details/104009802
其中,

BUILD_EXAMPLES
BUILD_TESTS
BUILD_PERF_TESTS
BUILD_opencv_python2
BUILD_opencv_python3

等可以根据名字选择OFF。另外,如果不是需要全部的contrib中的modules,或者某个modules编译总是错误,也可以关掉,例如

BUILD_opencv_sfm		# 这个我总是编译不过,就不编了,用到再说。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值