zoukankan      html  css  js  c++  java
  • ubuntu安装编译OpenCV

    https://zhuanlan.zhihu.com/p/118222087

    (细节项)在Linux下用正确的姿势配置编译安装OpenCV

    目录
    收起
    第一步 :下载依赖
    第二步:下载源码
    第三步:(可选)解压opencv和opencv_contirb(git clone 不用):
    第四步:移动
    第五步:生成makefile文件
    第六步:make编译安装
    第七步:(可选)错误处理(这里不是每个人都会遇到,没遇到就不用看这一步)
    第八步:配置路径
    第九步:测试
    感谢大家观看!

    更新时间:2021-11-8

    测试机:物理机

    OS:Ubuntu 20.04

    测试结果:配置测试成功

    Note:重新编排了内容,补充一些小问题。

    第一步 :下载依赖

    这一步非常重要,如果是缺少某个依赖文件,编译过程也不会出错,但是在使用opencv函数的时候就是提示错误,只能删了重新编译,非常的坑。

    所以一定要先下载依赖文件。

    所以一定要先下载依赖文件。

    所以一定要先下载依赖文件。

    通过以下命令来安装依赖文件,新建一个shell脚本:download.sh,写入以下内容。

    #!/bin/bash
    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 liblapacke-dev
    sudo apt-get install libxvidcore-dev libx264-dev
    sudo apt-get install libatlas-base-dev gfortran 
    sudo apt-get install ffmpeg

    修改download.sh权限并且执行脚本

    sudo chmod 777 ./download.sh、
    ./download.sh

    第二步:下载源码

    从GitHub下载opencv和opencv_contrib源码。

    如果你是刚刚安装Linux OS,那么最好就是修改源,不然下载会非常非常慢。具体操作请移步百度: 如何修改Linux源。

    我这里用的都是4.2.0的版本。

    OpenCV和contirb的源码下载路径:

    使用git clone下来,或者直接使用zip下载都可以,使用zip下载可能会出现下载不完全的情况(起码我是这样的),往往出现的问题是缺少boostdesc_bgm.i文件等问题(出现这个问题是由于网络问题)。所以我们需要提前下载好这些文件,以防不时之需。文件我已经集合在了我的GitHub里面。

    GitHub地址(欢迎大佬给小星星):

    第三步:(可选)解压opencv和opencv_contirb(git clone 不用):

    tar -zxvf opencv-4.2.0.tar.gz 
    tar -zxvf opencv_contirb-4.2.0.tar.gz 

    第四步:移动

    把opencv_contrib文件移动到opencv文件夹里:

    sudo cp -r opencv_contrib-4.2.0 opencv-4.2.0

    在opencv文件夹里面新建一个文件夹bulid,然后进入这个文件夹。

    sudo mkdir build
    cd bulid

    第五步:生成makefile文件

    为了输入方便,在这里用新建一个shell脚本然后执行

    #新建脚本,名字任意
    vim cmake_build.sh
    
    #写入命令内容,请替换 OPENCV_EXTRA_MODULES_PATH的真实路径
    #!/bin/bash
    sudo cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON  -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF  -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/ai/opencv-4.2.0/opencv_contrib-4.2.0/modules/ ..
    #修改权限
    sudo chmod 777 ./cmake_build.sh
    
    #执行 
    ./cmake_build_sh

    这里的命令不要原封不动的粘贴复制,要根据自己的路径进行修改,比如我的opencv文件夹是在/home/ai下,这个过程大概需要几十秒就可以完成,cmake编译过程会下载一些文件,如果网络良好的话下载文件应该全部完整,如果提示无法下载xxx.i文件,重复多试几次就可以了。

    如果实在不能下载完全文件的可以手动把.i文件放入源码文件夹内。

    #进入之前下载好的.i文件夹
    cd xxx/xxx/OpenCV-boostdesc-vgg-i
    #复制文件到对应位置
    sudo cp ./* xxx/xxx/opencv_4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/src/

    第六步:make编译安装

    我的机子是8核的所以是-j8,这个根据自己的机子进行选择,多核心编译能加快速度。大概需要5多分钟吧。

    #重新回到opencv/build文件夹
    cd xxx/xxx/opencv_4.2.0/build
    
    #编译安装
    sudo make -j8
    sudo make install

    第七步:(可选)错误处理(这里不是每个人都会遇到,没遇到就不用看这一步)

    继续等待,然后在大概95%的时候继续报错(@_@;),这个时候系统提醒你缺少某hpp文件,不要担心,这个文件不需要下载,直接可以在opencv文件夹中找到。

    这个问题可能是由于网络文件,下载不完全,我第一次的时候遇到了,第二次用git clone就没有。

    通过命令打开opencv_contrib文件:

    cd xxx/xxx/opencv-4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/test

    你会发现你并没有features2d文件夹,这个文件夹在/opencv-4.2.0/modules里面。

    使用命令移动这个文件夹到缺失目录下:

    sudo cp -r opencv-4.2.0/modules/features2d opencv-4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/test

    这下子基本问题全部解决了,继续执行make -j8命令编译。然后就可以看到100%编译完成。

    接着就是继续安装:

    sudo make install

    第八步:配置路径

    执行下面命令配置环境变量,注意如果你当前使用的是fish shell,或者别的shell,请退出到bash,不然配置会出问题。

    查找opencv4.pc文件,在/usr/local/lib/目录下建立pkgconfig目录,然后将build文件夹下编译生成的opencv4.pc 拷贝进/usr/local/lib/pkgconfig

    find ./ -name opencv4.pc

    检查在系统中是否能找到头文件

     pkg-config --cflags opencv4
     pkg-config --libs opencv4

    配置环境,这个时候你可能打开opencv.conf可能是空白的,没有关系,在文件末尾添加保存并退出,没有这个文件就自己建立一个。

    sudo vim/etc/ld.so.conf.d/opencv.conf
    
    #在opencv.conf中添加内容:
    /usr/local/lib

    执行生效命令:

    sudo ldconfig

    继续打开:

    sudo vim /etc/bash.bashrc

    在文件末尾添加写入:

    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  

    保存退出。

    执行更新命令:

    source /etc/bash.bashrc  
    sudo updatedb  

    整个时候就完成了整个opencv的编译配置。完结散花✧(≖ ◡ ≖✿)

    第九步:测试

    opencv内部集成了很多测试demo,可以通过执行这些demo看是否完成opencv的配置。

    通过命令进入到demo中:

    cd opencv-4.2.0/samples/cpp/example_cmake

    我们就稍微的修改一下代码,让程序显示一张图片就好了。

    sudo vim example.cpp

    修改保存后退出进行编译操作。

    sudo mkdir bulid
    cd bulid
    sudo cmake ..
    sudo make

    编译完以会得到一个可执行文件,执行后就可以看见图片了。

    ./opencv_example

    好了,以上全部是在Linux下安装并编译opencv的全部过程,虽然坑有点多,但是多操作几次就习惯了。如果在测试的时候还是没办法使用opencv,请认真比对我给出的过程。

     

    https://blog.csdn.net/csyz2019/article/details/106818655

     

    EIGEN编译错误:ubuntu16.04+eigen 编译时提示fatal error:Eigen/Core 没有那个文件或目录

    如果没有装Eigen库
    执行命令: sudo apt-get install libeigen3-dev

    错误原因
    虽然安装了Eigen库,但是编译时找不到相应文件,因为我们默认的安装地址是/usr/include/eigen3/Eigen,我们可以把它映射到/usr/include下
    执行命令:sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen

    也可以引入Eigen头文件,在CMakeLists.txt里添加Eigen头文件的目录。
    如:include_directories("/usr/include/eigen3")

     

  • 相关阅读:
    170322操作系统定义、功能、位置与历史
    java 多线程
    java 网络编程TCP程序设计
    java 事件处理机制
    java GUI编程
    170321php3第4章 PHP5的基本语法+作业九九乘法表
    170320网络编程 udpclient udpGroupClient
    二叉树线索化
    哈希表
    二叉搜索树
  • 原文地址:https://www.cnblogs.com/Manuel/p/15696528.html
Copyright © 2011-2022 走看看