OpenCV-3编译安装方法及常见错误解决(Ubuntu平台)

来源:互联网 发布:小知 编辑:程序博客网 时间:2024/05/01 15:40

  • 一 OpenCV简要介绍
    • 1 opencv源码安装总体步骤概览
  • 二 源码下载
    • a 可以从OpenCV官网直接下载
    • b也可以从github上clone
  • 三 编译环境安装
    • 1 依赖包安装
      • 打开shell终端键入
    • 2 ffmpeg安装
  • 四 编译
    • 1 命令参考编译安装方法
      • 假如不加入contrib模块
      • 假如要加入contrib模块那么
    • 2 cmake 图形化界面cmake-gui编译
  • 五 安装
    • 1 生成可执行文件安装
    • 2 设置opencv位置
  • 六 测试
  • 七 编译错误调试
    • 1 缺少xxxh文件
      • 例1缺少videodevhlinuxvideodevh not found
      • 例2缺少videoiohsysvideoioh not found
    • 2 usrbinld cannot find -l问题的解决办法
      • 在usrlib目录下有这些库文件
      • 在usrlib目录下没有这些文件
    • 3 缺少lippicv
    • 4 opencv error NppiGraphcutState has not been declared
  • 参考文献和书目

一 OpenCV简要介绍

OpenCV是一个开源的计算机视觉库,可以运行在Linux、Windows和Mac等操作系统上,其底层为C/C++语言编写目前支持的语言借口有:

  • C/C++
  • Python
  • Matlab等等

该库使用方便,用户根据开发语言需要配置好语言环境即可


1.1 opencv源码安装总体步骤概览:

Created with Raphaël 2.1.0确立版本确立版本源码下载源码下载编译环境安装编译环境安装编译编译安装安装测试测试2.x or 3.xcuda、matlab、python、java等依赖包、cmake、makemake installdemo

即采用编译安装软件项目的方式来处理:

Created with Raphaël 2.1.0开始编译安装是否成功?结束yesno

二 源码下载

a. 可以从OpenCV官网直接下载:

http://opencv.org/downloads.html

b.也可以从github上clone:

比如工作目录为myopencv即,

cd ~/myopencvgit clone https://github.com/Itseez/opencv.gitgit clone https://github.com/Itseez/opencv_contrib.git

三 编译环境安装

3.1 依赖包安装

打开shell终端,键入:

sudo apt-get install libopencv-dev build-essential cmake git libprotobuf-dev sudo apt-get install libgtk2.0-dev pkg-config python-dev python-numpysudo apt-get install libsnappy-dev gtk+-3.0 yasm Doxygen sudo apt-get install libdc1394-22 libopenblas-dev liblmdb-dev sudo apt-get install libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev sudo apt-get install libjasper-dev libhdf5-serial-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxine-dev sudo apt-get install libgstreamer0.10-dev libgflags-devsudo apt-get install libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev sudo apt-get install libqt4-dev libfaac-dev libgoogle-glog-devsudo apt-get install libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get install libtheora-dev libvorbis-dev protobuf-compiler liblapack-devsudo apt-get install libxvidcore-dev x264 v4l-utils unzip liblapacke-dev sudo apt-get install libavresample-dev libgphoto2-dev libavutil-devsudo apt-get install --no-install-recommends libboost-all-devsudo apt-get install libatlas-base-dev

3.2 ffmpeg安装

ffmpeg是一个开源的处理视频的软件

sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update sudo apt-get install ffmpeg

四 编译

4.1 命令参考编译安装方法

首先在myopencv目录下的opencv目录中建立build文件夹,

cd myopencv/opencvmkdir build

假如不加入contrib模块

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON ..

假如要加入contrib模块,那么:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/ -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=~/myopencv/opencv_contrib/modules/ ~/myopencv/opencv

当上述cmake命令执行后,会自动下载编译所需的第三方包,等待即可,包括ippcv等。

4.2 cmake 图形化界面(cmake-gui)编译

可以参考网址:http://blog.csdn.net/jay463261929/article/details/53197228

五 安装

5.1 生成可执行文件安装

采用make -j $(nproc)命令—-j后面跟的参数为参与编译的CPU核数

make -j4sudo make install

5.2 设置opencv位置

执行下面命令即可

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'sudo ldconfigsudo apt-get update

六 测试

以python为例,在python命令行中输入:

import cv2

显示正确即可

七 编译错误调试

7.1 缺少xxx.h文件

缺少xxx.h文件安装方法——————到/usr/include/目录下面查找类似的文件
下面是两个例子(前提是安装好相关依赖包,根据缺少的.h文件寻找需要的包)

例1:缺少videodev.h————linux/videodev.h not found

执行下面命令

sudo ln -s /usr/include/libv4l1-videodev.h  /usr/include/linux/videodev.h

例2:缺少videoio.h————sys/videoio.h not found

执行下面命令

sudo cp /usr/include/opencv2/videoio/videoio_c.h  /usr/include/x86_64-linux-gnu/syssudo ln -s /usr/include/x86_64-linux-gnu/sys/videoio_c.h  /usr/include/x86_64-linux-gnu/sys/videoio.h

7.2 /usr/bin/ld: cannot find -l****问题的解决办法

在ubuntu下编译C或cpp文件时,可能会出现找不到链接库的问题,其形式为:

cannot find -l****
这里的**一般是指的链接库,
既然是lib文件链接有问题,简单了。这种情况分两种

在usr/lib目录下有这些库文件

直接修复以下链接即可,例如依次执行

ln -s lib***.so.6(某个数字) lib***.so

即可

在usr/lib目录下没有这些文件

直接在系统根目录中依次搜索这些库文件,并使用

sudo cp 库文件名 /usr/lib

命令将相应库文件拷贝到该目录中即可

7.3 缺少lippicv

将opencv-3.x源码包下面的3rdparty下面的ippicv的unpack里面的ippicv_lnx里面的lib的intel64文件夹里面的libippicv.a拷贝到/usr/local/lib下面

7.4 opencv error: ‘NppiGraphcutState‘ has not been declared

如:
错误:/home/usrname/OpenCV-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState‘ has not been declared
typedef NppStatus (init_func_t)(NppiSize oSize, NppiGraphcutState* ppStat
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:135:18: error: ‘NppiGraphcutState‘ does not name a type
operator NppiGraphcutState*()
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState‘ does not name a type
NppiGraphcutState* pState;
…….
解决方案:
如opencv-3.1.0版本
进入opencv-3.1.0/modules/cudalegacy/src/目录,修改graphcuts.cpp文件,将:

#include "precomp.hpp"#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)改为#include "precomp.hpp"#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

其他版本修改修改graphcuts.cpp文件即可。
然后make编译就可以了

参考文献和书目

【1】http://blog.csdn.net/jay463261929/article/details/53197228
【2】http://blog.csdn.net/lemianli/article/details/73614453
【3】Gary Byadski等著.《学习opencv》.清华大学出版社
【4】Jan Erik Solem 著.《Python计算机视觉编程》.人民邮电出版社

原创粉丝点击