最近在学习yolov3模型,想用自己的数据集跑一下作者的darknet模型试一下,在训练的过程中遇到了诸多问题,opencv的安装便是其中比较棘手的一个问题,下面给大家介绍opencv2.4.9 安装过程和踩到的一些坑。
一、opencv安装流程
1.1 安装辅助工具
sudo apt-get install git
sudo apt-get install g++
sudo apt-get install vim
1.2 下载opencv
https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download?use_mirror=jaist
1.3 解压
下载完成后解压压缩包:
unzip opencv-2.4.9.zip
建议下载后将压缩包复制到home文件夹,方便查找。
进入opencv-2.4.9文件下
cd opencv-2.4.9
创建一个release文件
mkdir release
1.4 安装依赖库
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
在opencv的官方文档也有说明:
GCC 4.4.x or later. This can be installed with:
CMake 2.6 or higher;
Git;
GTK+2.x or higher, including headers (libgtk2.0-dev);
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] libdc1394 2.x;
[optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev.
ff-dev, libjasper-dev.
1.5 进入刚新建的release文件夹生成MakeFile文件
cd releaase
安装所有的lib文件都会被安装到/usr/local目录下
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
如果遇到Unsupported gpu architecture 'compute_11'的错误,解决方法为:
由于作者安装时未保存截图,故借用博客中的一张图片,截图引自:
1.6 构建和安装
在release文件夹下输入make
出现的问题
(1):/home/lingck/opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(129): error: a storage class is not allowed in an explicit specialization
出现的问题(2):
make[2]: *** [modules/gpu/CMakeFiles/opencv_gpu.dir/src/graphcuts.cpp.o] 错误 1
解决办法:打开graphcuts.cpp文件,修改graphcuts.cp
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
为:
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
opencv下载完成界面:
安装opencv:
make install
加载动态链接库:
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfi
安装成功,验证opencv安装版本:
以上过程便完成了opencv的安装流程,下面是安装过程中踩到的一些坑。
踩坑集锦:
问题一:cmake成功,make时报错
解决方法:
输入:“cmake -D CMAKE_BUILD_TYPE=bulid -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..”,即可解决!
问题二:error: a storage class is not allowed in an explicit specialization
1.安装opencv之前,必须安装CUDA
2. 下载libopencv4tegra-repo_l4t-r21_2.4.10.1_armhf
下载网址:https://developer.nvidia.com/linux-tegra-rel-21
3. 在这个步骤可能出现的问题
在build之前,替换“NCVPixelOperations.hpp”文件!否则会编译出错!!!
即:
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51):
error: a storageclassisnotallowedinanexplicitspecialization
NCVPixelOperations.hpp
所在目录:/Home/opencv-2.4.9/modules/gpu/src/nvidia/core
正确的 NCVPixelOperations.hpp
下载地址:http://download.csdn.net/download/znculee/9294885
参考:
领取专属 10元无门槛券
私享最新 技术干货