经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
[环境配置]Ubuntu 16.04 源码编译安装OpenCV-3.2.0+OpenCV_contrib-3.2.0及产生的问题
来源:cnblogs  作者:RichardYao1995  时间:2018/11/3 13:12:16  对本文有异议

1.OpenCV-3.2.0+OpenCV_contrib-3.2.0编译安装过程

1)下载官方要求的依赖包

  • GCC 4.4.x or later
  • CMake 2.6 or higher
  • Git
  • GTK+2.x or higher, including headers (libgtk2.0-dev) # 控制opencv GUI
  • pkg-config
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
  • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
  • [optional] libtbb2 libtbb-dev
  • [optional] libdc1394 2.x
  • [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
  1. $ sudo apt-get install build-essential
  2. $ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  3. $ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
  4. $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
  5. $ sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
  6. $ sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
  7. $ sudo apt-get install ffmpeg

2)下载OpenCV-3.2.0+OpenCV_contrib-3.2.0

  1. $ cd /the_path_you_would_install
  2. $ wget https://github.com/opencv/opencv/archive/3.2.0.zip
  3. $ wget https://github.com/opencv/opencv_contrib/archive/3.2.0.zip

直接右键解压,然后进行安装。

  1. $ cd opencv-3.2.0
  2. $ mkdir build
  3. $ cd build
  4. $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules/ ..
  5. $ make -j8 #如果线程足够多可以使用 make -j12
  6. $ sudo make install

第四行最后的 .. 一定不能忘记,因为我们是在/build文件夹中编译上层文件夹的程序。

  1. $ sudo ldconfig -v
  2. $ pkg-config --modversion opencv #确认OpenCV的版本,如果显示3.2.0说明安装完成

2.遇到的问题及解决方案

1)关于opencv_lapack.h缺失的问题

问题如下 

  1. In file included from /home/yao/opencv-3.2.0/modules/core/src/hal_internal.cpp:49:0:
  2. /home/yao/opencv-3.2.0/build/opencv_lapack.h:2:45: fatal error: LAPACKE_H_PATH-NOTFOUND/lapacke.h: No such file or directory
  3. compilation terminated.
  4. modules/core/CMakeFiles/opencv_core.dir/build.make:114: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/src/hal_internal.cpp.o' failed
  5. make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/hal_internal.cpp.o] Error 1
  6. make[2]: *** Waiting for unfinished jobs....
  7. [ 27%] Built target pch_Generate_opencv_test_optflow
  8. [ 27%] Built target pch_Generate_opencv_perf_optflow
  9. [ 27%] Built target pch_Generate_opencv_test_phase_unwrapping
  10. [ 27%] Built target pch_Generate_opencv_phase_unwrapping
  11. [ 27%] Built target pch_Generate_opencv_test_stitching
  12. [ 27%] Built target pch_Generate_opencv_test_structured_light
  13. [ 27%] Built target pch_Generate_opencv_stitching
  14. [ 27%] Built target pch_Generate_opencv_perf_stitching
  15. [ 27%] Built target pch_Generate_opencv_structured_light
  16. CMakeFiles/Makefile2:1901: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
  17. make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
  18. Makefile:160: recipe for target 'all' failed
  19. make: *** [all] Error 2

解决方案

  1. $ sudo apt-get install liblapacke-dev checkinstall
  • 在/build文件夹中找到opencv_lapack.h文件,把#include "LAPACKE_H_PATH-NOTFOUND/lapacke.h"改为#include "lapacke.h"
  • 重新编译

(2)CUDA 9.0环境下cmake编译时产生的问题

问题如下

在cmake时会产生关于CUDA版本的问题,这种情况在已装CUDA的条件下会出现,未安装时不会有。

  1. CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
  2. Please set them or make sure they are set and tested correctly in the CMake files:
  3. CUDA_nppi_LIBRARY (ADVANCED)
  4. linked by target "opencv_cudev" in directory

这是由于CUDA 9.0不支持2.0架构,尝试过网上其他方法,包括在cmake时给命令行加入配置属性如CUDA的路径以及配置,皆无效,而以下方案有效。

解决方案:

1) 在/opencv-3.2.0/cmake文件夹下找到FindCUDA.cmake文件

  • 找到
  1. find_cuda_helper_libs(nppi)

改为

  1. find_cuda_helper_libs(nppial)
  2. find_cuda_helper_libs(nppicc)
  3. find_cuda_helper_libs(nppicom)
  4. find_cuda_helper_libs(nppidei)
  5. find_cuda_helper_libs(nppif)
  6. find_cuda_helper_libs(nppig)
  7. find_cuda_helper_libs(nppim)
  8. find_cuda_helper_libs(nppist)
  9. find_cuda_helper_libs(nppisu)
  10. find_cuda_helper_libs(nppitc)
  • 找到
  1. set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")

改为

  1. set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")
  • 找到
  1. unset(CUDA_nppi_LIBRARY CACHE)

改为

  1. unset(CUDA_nppial_LIBRARY CACHE)
  2. unset(CUDA_nppicc_LIBRARY CACHE)
  3. unset(CUDA_nppicom_LIBRARY CACHE)
  4. unset(CUDA_nppidei_LIBRARY CACHE)
  5. unset(CUDA_nppif_LIBRARY CACHE)
  6. unset(CUDA_nppig_LIBRARY CACHE)
  7. unset(CUDA_nppim_LIBRARY CACHE)
  8. unset(CUDA_nppist_LIBRARY CACHE)
  9. unset(CUDA_nppisu_LIBRARY CACHE)
  10. unset(CUDA_nppitc_LIBRARY CACHE)

2) 找到文件OpenCVDetectCUDA.cmake

删除以下几句

  1. if(CUDA_GENERATION STREQUAL "Fermi")
  2. set(__cuda_arch_bin "2.0")

然后将下一行的elsif改为if

3) 找到文件opencv\modules\cudev\include\opencv2\cudev\common.hpp

添加头文件

  1. #include <cuda_fp16.h>

(3)不支持的GPU architecture问题

问题如下

  1. nvcc fatal : Unsupported gpu architecture 'compute_20'

解决方案

在cmake的时候命令行的参数中加入如下一句

  1. -D CUDA_GENERATION=Kepler

(4)编译到99%或100%时卡住的问题

问题如下

  1. [100%] Built target opencv_perf_stitching
  2. [100%] Built target opencv_python2

这个时候,会一直卡着

解决方案

  • 不要终止安装,等一等,或者make -j8甚至make -j12多线程安装可以快一点,一般几分钟可以安装完成

5)在CMakeLists.txt中设置指定的OpenCV版本

解决方案

  1. set(OpenCV_DIR "/your_opencv_path/opencv-3.2.0/build")
  2. find_package(OpenCV REQUIRED)
  3. include_directories(${OpenCV_INCLUDE_DIRS})

其中your_opencv_path指你的opencv的安装路径,注意区分大小写。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号