Ubuntu 16.04编译安装OpenCV(Python)

在Ubuntu 16.04 64位系统中编译安装OpenCV 3.1.0时,详细介绍了安装依赖及解决编译过程中遇到的问题,包括解决与的冲突以及hdf5.h头文件找不到的错误。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

环境: Ubuntu 16.04 64bit ,openCV opencv-3.1.0

1.安装opencv依赖包

$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
$ sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
$ sudo apt-get install ffmpeg  
2.下载opencv源码
这里需要下载opencv和opencv_contrib(后者会在cmake配置的时候用到),这是因为opencv3以后SIFT和SURF之类的属性被移到了contrib中。

$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip opencv_contrib.zip
3.安装opencv3.1.0

$ cd opencv3.1.0
$ mkdir build
$ cd build
$ sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. -DOPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules ~/opencv-3.1.0/ WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D WITH_CUDA=ON -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D CUDA_GENERATION=Auto -D WITH_GSTREAMER_0_10=OFF ..
$ sudo make -j8 (-j4 四核编译, -j8八核编译,此处根据自己电脑的CPU配置)
然后

$ sudo make install
===========================================

中途可能出现问题

  1. 执行sudo make时,可能出现
    make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error 1 make[1]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all] Error 2 make: *** [all] Error 2的错误。
    那是因为 cuda-8.0OpenCV 3.1.0发生了冲突。解决方法:修改openCV 3.1.0源码,使其兼容cuda-8.0
$ sudo vi opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp

将第四十五行位置的

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为

#if !defined(HAVE_CUDA)||defined(CUDA_DISABLER)||(CUDART_VERSION>=8000)

然后重新执行

$ sudo make -j4             # -j4为开四个线程,加快编译速度
问题二      fatal error: hdf5.h: No such file or directory 
opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory

原因:找不到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"

最后修改完成后要执行
sudo make clean

。因为执行sudo make clean后会重新从头编译,然后再执行 sudo make -j8





开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值