ubuntu16.04+cuda8.0+cudnn5.1+caffe------Opencv3.1.0安装

1.安装依赖项:

sudo apt-get install --assume-yes libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

然后安装OpenCV需要的一些依赖项,一些文件编码解码之类的东东。

sudo apt-get install build-essential cmake git

sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

2.下载opencv3.1.0,解压,放置位置例如/usr/local/opencv-310

cd opencv-310

sudo mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-310 -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..(后面两点不要忘记)安装在opencv-310里面了。

Opencv310+opencv_contrib310

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/usr/local/opencv310/opencv_contrib/modules/ ..  


cmake成功后,会出现如下结果,提示配置和生成成功:

-- Configuring done

-- Generating done

-- Build files have been written to: /usr/local/opencv-310/build

打开/usr/local/opencv310/modules/cudalegacy/src/graphcuts.cpp,修改为:
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000)

继续 sudo make -j8

make过程中出现nvcc warning:

nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).

解决方法:ctrl+c中断,然后输入:

cmake -DBLAS=Open -DCUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets ..

cmake成功后,会出现如下结果,提示配置和生成成功:

-- Configuring done

-- Generating done

继续sudo make -j8,这个过程真漫长,不知道大牛们是不是也是这样,无奈的等待,error.

[100%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
In file included from /usr/local/opencv310/build/modules/python2/pyopencv_generated_include.h:11:0,
                 from /usr/local/opencv310/modules/python/src2/cv2.cpp:12:
/usr/local/opencv310/opencv_contrib/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: 没有那个文件或目录
compilation terminated.
modules/python2/CMakeFiles/opencv_python2.dir/build.make:285: recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o' failed
make[2]: *** [modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o] Error 1
CMakeFiles/Makefile2:19635: recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/all' failed
make[1]: *** [modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2

原因:找不到hdf5.h的路径
解决办法:在opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp 文件中修改第40行

#include <hdf5.h> 修改成#include "/usr/include/hdf5/serial/hdf5.h"

PS:每次修改文件后可直接执行make命令,不需要执行make clean。因为执行make clean后会重新从头编译,那样会浪费时间。

..................................................

Scanning dependencies of target opencv_python3
Scanning dependencies of target opencv_python2
[100%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o
[100%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
[100%] Linking CXX executable ../../bin/opencv_test_superres
[100%] Linking CXX executable ../../bin/opencv_perf_superres
[100%] Built target opencv_test_superres
[100%] Built target opencv_perf_superres
[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-35m-x86_64-linux-gnu.so
[100%] Built target opencv_python3
[100%] Linking CXX shared module ../../lib/cv2.so
[100%] Built target opencv_python2

继续sudo make install

-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_frontalcatface_extended.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_upperbody.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_profileface.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_profileface.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_frontalface.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_silverware.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_frontalcatface.xml
-- Installing: /usr/local/bin/opencv_traincascade
-- Set runtime path of "/usr/local/bin/opencv_traincascade" to "/usr/local/lib:/usr/local/cuda/lib64"
-- Installing: /usr/local/bin/opencv_createsamples
-- Set runtime path of "/usr/local/bin/opencv_createsamples" to "/usr/local/lib:/usr/local/cuda/lib64"
-- Installing: /usr/local/bin/opencv_annotation
-- Set runtime path of "/usr/local/bin/opencv_annotation" to "/usr/local/lib:/usr/local/cuda/lib64"

3.配置环境:


sudo gedit ~/.bashrc在文件末尾添加以下内容,然后保存:export PKG_CONFIG_PATH=/usr/local/opencv-310/lib/pkgconfigexport LD_LIBRARY_PATH=/usr/local/opencv-310/lib

source ~/.bashrc


sudo gedit /etc/ld.so.conf.d/opencv.conf

输入opencv的lib路径:/usr/local/opencv-310/lib

sudo ldconfig



3.上面的这些过程并不能保证在写makefile中调用的是3.10版本的库,可能还是调用之前的2.4.13的库,具体还是要在CMakeList.txt中指定要找的opencv的目录,
opencv3.10的编译目录 /usr/local/opencv-310/build 下找到 OpenCVConfig.cmake 文件,并在CMakeList.txt中添加对应的路径信息。这样cmake的时候调用的就是3.10的库,想切换成原来的2.4.10版本只需将第二步的 bashrc文件和CMakeList.txt文件中修改的内容改成对应的opencv2.4.10的位置就好了。

# cmake needs this line
cmake_minimum_required(VERSION 2.8)
set (OpenCV_DIR "/usr/local/opencv-310/build")
# Define project name
project(myTest)
# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)
# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
if(CMAKE_VERSION VERSION_LESS "2.8.11")
  # Add OpenCV headers location to your include paths
  include_directories(${OpenCV_INCLUDE_DIRS})
endif()
# Declare the executable target built from your sources
add_executable(demo demo.cpp)
# Link your application with OpenCV libraries
target_link_libraries(demo ${OpenCV_LIBS})

  1. # OpenCV  
  2. set(OpenCV_DIR "/home/xxx/Documents/Installers/opencv/opencv/build")  
  3. FIND_PACKAGE(OpenCV REQUIRED) 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值