这里先给出OpenCV3.1.0的下载链接:http://pan.baidu.com/s/1qYwLin6 密码:xes2
LZ的电脑环境是Ubuntu14.04,之前因为安装最新版的tensorflow,所以安装的是CUDA 8.0,cudnn5.1,然后LZ就默默的下载好了OpenCV 3.1.0版本,结果安装还是出现几个问题,好在,都已经解决了,这里就分享一下。
1.正常安装的步骤
从官网(http://opencv.org/downloads.html)下载OpenCV,并将其解压到你要安装的位置,假设解压到了/home/opencv。
安装前准备,创建编译文件夹:
cd ~/opencv
mkdir build
cd build
安装依赖项:
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev
配置:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译:
make -j8 #-j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。
以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:
sudo make install
如果没有报错,那就大功告成啦!可是,理想很丰满,现实很骨感,现实往往是error。。。
Error1:
CMake Warning at 3rdparty/ippicv/downloader.cmake:54 (message):
ICV: Local copy of ICV package has invalid MD5 hash:
0103b909e19ca9c6497a7ae696c16480 (expected:
8b449a536a2157bcad08a2b9f266828b)
Call Stack (most recent call first):
3rdparty/ippicv/downloader.cmake:108 (_icv_downloader)
cmake/OpenCVFindIPP.cmake:235 (include)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
CMakeLists.txt:526 (include)
-- ICV: Downloading ippicv_linux_20141027.tgz...
CMake Error at 3rdparty/ippicv/downloader.cmake:71 (file):
file DOWNLOAD HASH mismatch
for file: [/home/jason/program/opencv-3.0.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b/ippicv_linux_20141027.tgz]
expected hash: [8b449a536a2157bcad08a2b9f266828b]
actual hash: [0103b909e19ca9c6497a7ae696c16480]
Call Stack (most recent call first):
3rdparty/ippicv/downloader.cmake:108 (_icv_downloader)
cmake/OpenCVFindIPP.cmake:235 (include)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
CMakeLists.txt:526 (include)
校验值不准??这个问题也是LZ第一次遇到这种问题,也是醉了,解决方案倒也很简单。
我这里分享了一个校验码的文件链接:http://pan.baidu.com/s/1dFagWCh 密码:a5oo
用LZ分享的文件取替换原有文件的校验文件即可。原有文件的地址为~/opencv-3.0.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz
Error2:
modules/cudalegacy/src/graphcuts.cpp:120:54: error:
‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize,
NppiGraphcutState** ppState, Npp8u* pDeviceMem);
这是因为opecv3.1与cuda8.0不兼容导致的。解决办法:
修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容:
//#if !define(HAVE_CUDA) || defined(CUDA_DISABLER)
#if !defined (HAVE_CUDA) || defined(CUDA_DISABLER) || (CUDA_VERSION>=8000)
error是经常会碰到的,就看你想不想解决了O(∩_∩)O