opencv 安装补充包 opencv_contrib,吐血整理

安装这个额外包安装了好多天的时间,因为电脑装了cuda8,又装了opencl,然后重新编译opencv就巨坑,真的是巨坑,吐血整理,因为caffe和cuda已经装好,还好没有装崩

首先两个压缩包要下对,下面取自github上的issue,

Thanks @alalek !
I update both opencv and opencv_contrib to the latest and it works fine now.

Yesterday:

  • opencv (master) + opencv_contrib (master): fail
  • opencv (3.2.0) + opencv_contrib (master): fail

Today:

  • opencv (master) + opencv_contrib (master): ok
  • opencv (3.2.0) + opencv_contrib (master): fail
  • opencv (3.2.0) + opencv_contrib (3.2.0): ok
综上,我是一直卡在用opencv3.2的release版本和opencv_contrib 是master版本下编译,打死编不过,后来重新下载了两个release版本再编译才过了的,

首先是cmake 配置选项

proxy sudo cmake -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules  -D CMAKE_BUILD_TYPE=Release -D WITH_CUDA=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..

上面第一个proxy是我用了命令行的梯子,因为国内可能访问不了补充包需要下载的一些资源,教程在这里如果不用梯子的话,需要自己下载一个叫protobuf-cpp-3.1.0.tar.gz,放在他报错的目录下,百度应该可以下载到,然后配置完了会看到检测到cuda7.5,然而我安装的cuda明明是8.0,这是一个之后的坑,等会说。

然后就是make -8,因为前面检测到的cuda7.5,会报错一个

undefined reference to nppiGraphcut*  

然后需要改一行opencv源码的代码,

opencv-3.2.0/modules/cudalegacy/src/graphcuts.cpp 

在一行cuda_version >=8000 改为 7500 

因为实际上编译用的cuda8,不知道为什么会检测出来是cuda7.5

然后编译,如果遇到一些boost*.i没有,就下好了放在同目录下,cmake可以联网的话理论上会下载好的,然后就是编译完成了

最后一坑,让我差点重新装系统,就是上面编译好后,python可以import cv2了,通过g++ flag opencv也可以编译,但是cmake出错

Could NOT find CUDA: Found unsuitable version "8.0", but required is exact
  version "7.5" (found /usr/local/cuda-8.0)
Call Stack (most recent call first):
  /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:386 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.5/Modules/FindCUDA.cmake:949 (find_package_handle_standard_args)
  /usr/local/share/OpenCV/OpenCVConfig.cmake:86 (find_package)
  /usr/local/share/OpenCV/OpenCVConfig.cmake:105 (find_host_package)
  CMakeLists.txt:4 (FIND_PACKAGE)
cmake检测到opencv需要cuda7.5(因为编译是检测到的7.5,实际用的cuda8),所以cmake无法完成,这里我进
/usr/local/share/OpenCV/OpenCVConfig.cmake:105
然后修改了 7.5 为8 ,即修改了opencv 的配置文件使其为8.0版本,然后opencv就完美运行,试了一波caffe也能运行


你可能感兴趣的:(安装教程,项目相关,图像处理)