Linux无root无sudo权限安装opencv3.4.1

  • 因为导师分配的平台账号只有普通用户权限,所以只能自己下载安装一些软件,以opencv为例。
  • 首先linux系统已经安装好cmake-3.14.5

下载opencv3.4.1压缩包和opencv_contrib3.4.1

执行命令:

  • tar -xzvf *.tar.gz
  • cd opencvXXXX
  • mkdir build && cd build
  • cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D WITH_V4L=ON -D BUILD_TIFF=ON -D BUILD_EXAMPLES=ON -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D WITH_OPENGL=ON -D WITH_EIGEN=ON -D WITH_CUDA=ON -D WITH_CUBLAS=ON -D CUDA_NVCC_FLAGS="-std=c++11 --expt-relaxed-constexpr" -D WITH_NVCUVID=ON -D BUILD_opencv_cudacodec=OFF -D OPENCV_EXTRA_MODULES_PATH=/home/xxx/xxx/opencv-3.4.1/opencv_contrib/modules -D CMAKE_INSTALL_PREFIX=/usr/local/ ..(视个人情况)

遇到问题:

  • 一开始没有加上 -D WITH_NVCUVID=ON -D BUILD_opencv_cudacodec=OFF(error:Cuda 10.0 fatal error: dynlink_nvcuvid.h: No such file or directory)

原因:

  • cuda10以上没有dynlink_nvcuvid.h和nvcuvid.h,所以要将BUILD_opencv_cudacodec=OFF

执行命令:

  • make -j4
  • 既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素。
  • 用make -j带一个参数(2,4,8,16...),可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
  • 在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。
  • 但如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
  • 可以去了解一下超线程技术。

执行命令:

  • make install

添加环境变量:

  • vim ~/.bashrc
  • 将下面内容添加到文件后面:
  • PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/home/xxx/xxx" export
  • PKG_CONFIG_PATH export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/xxx/xxx/"

遇到问题:

  • Package opencv was not found in the pkg-config search path.Perhaps you should add the directory containing `opencv.pc' to the PKG_CONFIG_PATH environment variable.No package 'opencv' found

解决:

  • 找到opencv.pc所在路径
  • source ~/.bashrc

最后测试:

  • pkg-config --modversion opencv
  • 显示opencv版本号则成功

你可能感兴趣的:(Linux无root无sudo权限安装opencv3.4.1)