Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 3165|回复: 0

[默认分类] Ubuntu16.04下安装OpenCV3.2.0

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-28 17:45:47 | 显示全部楼层 |阅读模式
    opencv基本上是搞CV必备套件之一了,支持的语言也非常多,但是安装起来有点麻烦(如果是在conda下安装的话则可以用conda install -c menpo opencv3=3.2.0)。需要注意的是,pip可以安装的opencv-python安装并不依赖opencv,只是封装了opencv的Python API,一般情况下也够用。但是如果准备安装完整版本的opencv,这里比较建议将opencv-python卸载,以免之后产生一些不必要的报错。
    通过官方文档和一些博客总结的安装流程大致如下:
    1.安装官方给的opencv依赖包

    GCC 4.4.x or later
    CMake 2.6 or higher
    Git
    GTK+2.x or higher, including headers (libgtk2.0-dev) # 控制opencv GUI
    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] libtbb2 libtbb-dev
    [optional] libdc1394 2.x
    [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
    1. [code]$ sudo apt-get install build-essential
    2. $ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    3. $ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
    4. $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
    5. $ sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
    6. $ sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
    7. $ sudo apt-get install ffmpeg
    复制代码
    [/code] ** 注:**其他一些包在之后的cmake的时候缺失的时候会进行安装,如果安装失败可以手动下载相应的包然后放入提示的目录下。而cmake下载tar.gz文件的时候可能不支持,需要进行配置,具体操作可以参考这里

    2.下载opencv3.2.0
    这里需要下载opencv和opencv_contrib(后者会在cmake配置的时候用到),这是因为opencv3以后SIFT和SURF之类的属性被移到了contrib中,。
    1. [code]$ wget https://github.com/opencv/opencv/archive/3.2.0.zip # 从github上直接下载或者clone也可
    2. $ wget https://github.com/opencv/opencv_contrib/archive/3.2.0.zip
    复制代码
    [/code]
    3a.配置编译opencv (无NVIDIA CUDA版本)
    将上述opencv包解压,然后cmake配置属性
    1. [code]$ cd opencv-3.2.0
    2. $ mkdir build
    3. $ cd build
    4. $ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    5.     -D CMAKE_INSTALL_PREFIX=/home/fanzong/anaconda2/envs/tensorflow \
    6.     -D INSTALL_PYTHON_EXAMPLES=ON \
    7.     -D INSTALL_C_EXAMPLES=OFF \
    8.     -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \
    9.     -D PYTHON_EXCUTABLE=/home/fanzong/anaconda2/envs/tensorflow/bin/python \
    10.     -D WITH_TBB=ON \
    11.     -D WITH_V4L=ON \
    12.     -D WITH_QT=ON \    # 1
    13.     -D WITH_GTK=ON \
    14.     -D WITH_OPENGL=ON \
    15.     -D BUILD_EXAMPLES=ON .. # cmake命令的使用方式:cmake [<some optional parameters>] <path to the OpenCV source directory>。如果命令报错的话可以试着把-D后面的空格去掉在执行一次。
    16. $ make -j4
    17. $ sudo make install
    18. $ sudo /bin/bash -c "echo "/home/fanzong/anaconda2/envs/tensorflow/lib" > /etc/ld.so.conf.d/opencv.conf"
    19. $ sudo ldconfig
    复制代码
    [/code]
    PS:1. 如果qt未安装可以删去此行;若因为未正确安装qt导致的Qt5Gui报错,可将build内文件全部删除后重新cmake,具体可以参考这里
    CMAKE_INSTALL_PREFIX:安装的python目录前缀,其实就是指定了python模块的安装路径:CMAKE_INSTALL_PREFIX/lib/python2.7/dist-packages。获取该路径的方式可以用
    1. python -c "import sys; print sys.prefix"
    复制代码
    PYTHON_EXCUTABLE:指定python路径
    OPENCV_EXTRA_MODULES_PATH: 指定opencv所需模块的路径,就是之前我们所说的contrib
    其他cmake的具体变量说明可以看这里
    3.b 配置编译opencv (NVIDIA CUDA版本)
    opencv最麻烦的地方就是编译是属性的配置,对于不同的需求要配置不同的属性。当使用NVIDIA GPU GeForce 1080ti的时候:
    1. [code]$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    2.     -D CMAKE_INSTALL_PREFIX=/usr/local \
    3.     -D INSTALL_PYTHON_EXAMPLES=ON \
    4.     -D INSTALL_C_EXAMPLES=OFF \
    5.     -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \
    6.     -D PYTHON_EXCUTABLE=/usr/bin/python \
    7.     -D WITH_CUDA=ON \    # 使用CUDA
    8.     -D WITH_CUBLAS=ON \
    9.     -D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
    10.     -D CUDA_ARCH_BIN="5.3" \    # 这个需要去官网确认使用的GPU所对应的版本[查看这里](https://developer.nvidia.com/cuda-gpus)
    11.     -D CUDA_ARCH_PTX="" \
    12.     -D CUDA_FAST_MATH=ON \    # 计算速度更快但是相对不精确
    13.     -D WITH_TBB=ON \
    14.     -D WITH_V4L=ON \
    15.     -D WITH_QT=ON \    # 如果qt未安装可以删去此行;若因为未正确安装qt导致的Qt5Gui报错,可将build内文件全部删除后重新cmake,具体可以参考[这里](http://stackoverflow.com/questions/17420739/opencv-2-4-5-and-qt5-error-s)
    16.     -D WITH_GTK=ON \
    17.     -D WITH_OPENGL=ON \
    18.     -D BUILD_EXAMPLES=ON ..
    复制代码
    [/code]
    3.c 配置编译opencv(NVIDIA Jetson TX2开发板)
    目前官方提供的opencv4tegra是2.4版本的,尚不支持3.2版本,所以需要自己编译。

    1. [code]$ cmake -D WITH_CUDA=ON \
    2.     -D CUDA_ARCH_BIN="6.2" \  # 安装了6.2版本
    3.     -D CUDA_ARCH_PTX=""  \
    4.     -D WITH_OPENGL=ON  \
    5.     -D WITH_LIBV4L=ON \
    6.     -D CMAKE_BUILD_TYPE=RELEASE \
    7.     -D CMAKE_INSTALL_PREFIX=/usr/local ..
    复制代码
    [/code]

    PS:不需要安装contrib包,否则之后调用摄像头调整分辨率的时候会失败。具体安装细节可以参考这里
    编译成功时应该看到这些:

    CUDA8.0
    1. [code]--   Other third-party libraries:
    2. --     Use Cuda:                    YES (ver 8.0)
    3. --   NVIDIA CUDA
    4. --     Use CUFFT:                   YES
    5. --     Use CUBLAS:                  NO
    6. --     USE NVCUVID:                 NO
    7. --     NVIDIA GPU arch:             53
    8. --     NVIDIA PTX archs:
    9. --     Use fast math:               NO
    复制代码
    [/code]
    OpenGL
    1. [code]--   GUI:
    2. --     GTK+ 2.x:                    YES (ver 2.24.30)
    3. --     OpenGL support:              YES (/usr/lib/aarch64-linux-gnu/libGLU.so /usr/lib/aarch64-linux-gnu/libGL.so)
    复制代码
    [/code]
    VideoIO
    1. [code]--   Video I/O:
    2. --     DC1394 2.x:                  YES (ver 2.2.0)
    3. --     FFMPEG:                      YES
    4. --       codec:                     YES (ver 54.92.100)
    5. --       format:                    YES (ver 54.63.104)
    6. --       util:                      YES (ver 52.18.100)
    7. --       swscale:                   YES (ver 2.2.100)
    8. --       gentoo-style:              YES
    9. --     GStreamer:
    10. --       base:                      NO
    11. --       video:                     NO
    12. --       app:                       NO
    13. --       riff:                      NO
    14. --       pbutils:                   NO
    15. --     V4L/V4L2:                    Using libv4l (ver 1.0.0)
    复制代码
    [/code] 注:GPU版本安装的时候很容易出错,这里说的出错并不是编译报错,而是在python中调用的时候报错,比如cv2.VideoCapture(0)返回false,cv2.imshow()的时候报unspecified error。在调用cv2的时候报错一般都是在cmake配置编译的时候由于配置错误导致的,所以需要确认配置的参数是否能够覆盖到你所需的范围。
    关于GPU版本的安装也可以参考下这里,写得更加详细清楚。

    4.完成安装并测试
    安装完成以后,重启下机器。编译之后应该会在CMAKE_INSTALL_PREFIX/lib/python2.7/dist-packages/目录下找到cv2.so。打开python console,检测opencv版本
    1. python -c "import cv2; print cv2.__version__"
    复制代码
    。如果正确安装的话则会输出3.2.0。
    PS:如果import的时候报类似于
    1. error while loading shared libraries: libopencv_core.so.3.0: cannot open shared object file: No such file or directory.
    复制代码
    的错误,可能是library环境变量的错误,可以尝试将
    1. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    复制代码
    加入到
    1. ~/.bashrc
    复制代码
    中然后source。
    参考
    https://www.learnopencv.com/install-opencv3-on-ubuntu/
    http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
    http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html
    http://stackoverflow.com/questions/31040746/cant-open-video-using-opencv
    http://dev.t7.ai/jetson/opencv/
    https://developer.nvidia.com/cuda-gpus
    http://stackoverflow.com/questions/41818870/python-opencv-imshow-error
    http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_fedora/py_setup_in_fedora.html
    http://answers.opencv.org/question/27114/error-while-loading-shared-libraries-libopencv_coreso30/
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-19 21:40 , Processed in 0.368604 second(s), 47 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表