进入有安装路径配置文件install_manifest.txt(是关于opencv配置的路径)的目录,即opencv的安装目录,一般都在主文件夹里。
参考:https://blog.csdn.net/qiaoji6073/article/details/76572801
1)下载源码,zip包或者tar.gz包
源码下载地址:https://github.com/opencv/opencv/releases/tag/3.3.0
2)安装教程
官方文档教程:https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
3)安装遇到的问题
每个人电脑的配置环境不同,因而在安装过程中官方教程也不一定完全适用,会有一些小问题。遇到问题解决问题。
//usr/lib/libvtkIO.so.5.10:对‘TIFFReadDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFIsTiled@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFScanlineSize@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFClose@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFGetFieldDefaulted@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFSetWarningHandler@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘_TIFFmalloc@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFDefaultStripSize@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFReadTile@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFWriteScanline@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘_TIFFfree@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFGetField@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFClientOpen@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFNumberOfDirectories@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFOpen@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFReadRGBAImage@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFSetField@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFSetErrorHandler@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFSetDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFReadScanline@LIBTIFF_4.0’未定义的引用
//usr/lib/libvtkIO.so.5.10:对‘TIFFNumberOfTiles@LIBTIFF_4.0’未定义的引用
collect2: error: ld returned 1 exit status
modules/viz/CMakeFiles/opencv_test_viz.dir/build.make:234: recipe for target 'bin/opencv_test_viz' failed
make[2]: *** [bin/opencv_test_viz] Error 1
CMakeFiles/Makefile2:6104: recipe for target 'modules/viz/CMakeFiles/opencv_test_viz.dir/all' failed
make[1]: *** [modules/viz/CMakeFiles/opencv_test_viz.dir/all] Error 2
解决办法:在cmake编译opencv时候加参数编译-DBUILD_TIFF=ON
error: nvcc fatal: Unsupported gpu architecture 'computer_20'
error: 找不到lnppi
原因:
这通常是由于cuda版本和opencv版本不适配导致的。
cuda9.x不再支持2.0架构,且将libnppi.so换成libnppc.so libnppial.so libnppicc.so libnppicom.so libnppidei.so libnppif.so libnppig.so libnppim.so libnppist.so libnppisu.so libnppitc.so libnpps.so。
解决办法:
参考:https://blog.csdn.net/sophia_xw/article/details/83015647
https://blog.csdn.net/u014613745/article/details/78310916
https://cloud.tencent.com/developer/article/1367603
1、打开opencv-3.3.0/cmake/OpenCVDetectCUDA.cmake文件,根据cuda版本的计算能力,选择CUDA_GENERATION的参数:Fermi/Kepler/Maxwell/Pascal
eg: CUDA9.0—— 在cmake编译opencv时候加参数编译-D CUDA_GENERATION=Pascal
2、找到opencv3.3.0\modules\cudev\include\opencv2\cudev\common.hpp
在common.hpp中添加cuda_fp16.h
#include
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcut8_32f8u’未定义的引用
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcut_32s8u’未定义的引用
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcutInitAlloc’未定义的引用
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcutFree’未定义的引用
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcut8_32s8u’未定义的引用
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcutGetSize’未定义的引用
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcut8GetSize’未定义的引用
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcut8InitAlloc’未定义的引用
../../lib/libopencv_cudalegacy.so.3.3.0:对‘nppiGraphcut_32f8u’未定义的引用
解决方法:
修改opencv-3.3.0/modules/cudalegacy/src中的graphcuts.cpp
将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
改为:
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 7000)
编译通过且安装成功了,但是为什么这样可行我也不是很清楚。。。迷。。。
参考:http://answers.opencv.org/question/95148/cudalegacy-not-compile-nppigraphcut-missing/