• linux 下opencv编译安装


    安装所需要的工具和包:
    sudo apt-get install build-essential pkgconfig
    sudo apt-get install cmake git gcc
    sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    安装依赖库ffmpeg
        cd ffmpeg/
        ./configure --disable-yasm  --enable-shared --enable-pic --prefix=/usr/local/ffmpeg 生成可连接库,--prefix设置安装路径
        make
        make install 开始安装
    vim /etc/profile 打开环境变量文档
        在文尾输入:
        export FFMPEG_HOME=/usr/local/ffmpeg
        export PATH=$FFMPEG_HOME/bin:$PATH
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib #添加动态库路径
        export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig:/usr/loal/lib
        ffmpeg -version  如果显示版本信息,就证明ffmpeg已经成功安装了
        
    首先检测你的环境是否配置成功。
        pkg-config  ffmpeg --libs --cflags查看ffmpeg链接库是否配置好了如果没配置好也别着急,继续往下看)
        pkg-config opencv --libs --cflags查看opencv链接库和头文件配置
    如果没有打印程序的链接库路径,说明链接库没有完整配置好
        这个时候首进入ffmpeg文件目录(不是源码目录,是软件安装目录/usr/local/ffmpeg/)/lib的目录的
        所有文件复制到/usr/local/lib目录下;然后打开ffmpeg/lib/的里有个pkgconfig,
        把里头的文件全部复制到/usr/local/lib/pkgconfig里头

    编译源码:
        1.cd opencv-3.3.0
        2.mkdir build  
        3.cd build  
        4.cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..  编译通过
        
        4.1.cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/firstuser/depend/opencv-3.3.0/opencv_contrib-3.3.0/modules/ -D WITH_TBB=ON -D BUILD_SHARED_LIBS=OFF -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..
        
        4.2.cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_SHARED_LIBS=OFF -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..
          
        5.make -j4 多线程
        6.sudo make install  
        
    修改ippicv下载路径:
        vim /home/firstuser/depend/opencv-3.3.0/3rdparty/ippicv/ippicv.cmake #根据自己的路径填写
        将47行的
        "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
        改为手动下载的文件的本地路径:
        "file:///home/firstuser/下载/" (根据自己的路径填写)
        到了下载ippicv那一步时会自动从本地下载。
    错误及解决方法:
        0.error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
        error: ‘AVFMT_RAWPICTURE’ was not declared in this scope

        在/opt/opencv/opencv-3.3.0/modules/videoio/src/cap_ffmpeg_impl.hpp 里最顶端添加
        #define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
        #define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
        #define AVFMT_RAWPICTURE 0x0020

        1.-- No package 'gtk+-3.0' found
        sudo apt-get install libgtk-3-dev

        2.--   No package 'gstreamer-base-1.0' found
        --   No package 'gstreamer-video-1.0' found
        --   No package 'gstreamer-app-1.0' found
        --   No package 'gstreamer-riff-1.0' found
        --   No package 'gstreamer-pbutils-1.0' found
        sudo apt-get -y install libgstreamer-plugins-base1.0-dev
        sudo apt-get -y install libgstreamer1.0-dev

        3.--   No package 'libavresample' found
        --   No package 'libgphoto2' found
        sudo apt-get -y install libavresample-dev
        sudo apt-get -y install libgphoto2-dev

        4.-- Could not find OpenBLAS include. Turning OpenBLAS_FOUND off
        -- Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off
        -- Could NOT find Atlas (missing:  Atlas_CBLAS_INCLUDE_DIR Atlas_CLAPACK_INCLUDE_DIR             Atlas_CBLAS_LIBRARY Atlas_BLAS_LIBRARY Atlas_LAPACK_LIBRARY)
        -- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
        -- Could NOT find JNI (missing:  JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH             JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
        -- Could NOT find Matlab (missing:  MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR         MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN)
        -- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install         subdirectory with VTKConfig.cmake file
        sudo apt-get install libopenblas-dev

        5.-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
        sudo apt-get install doxygen

        6.-- Could NOT find JNI (missing:  JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH             JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)

        sudo mkdir /usr/local/java
        sudo tar zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/java
        sudo ln -s /usr/local/java/jdk1.8.0_151/ /usr/local/java/latest
        sudo vim /etc/profile
        export JAVA_HOME=/usr/local/java/latest
        export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        export PATH=$PATH:$JAVA_HOME/bin
        source /etc/profile

    cd ~/opencv-3.3.0/build
    make clean
    重新编译:
        cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..  编译通过
        make -j8
        make install


    附3.4版本以上有该问题:
    /usr/bin/ld: warning: libswresample.so.3, needed by //usr/local/ffmpeg/lib/libavcodec.so.58, not found (try using -rpath or -rpath-link)
    //usr/local/ffmpeg/lib/libavcodec.so.58:对‘swr_close@LIBSWRESAMPLE_3’未定义的引用
    解决方法:
    https://blog.csdn.net/guo_lei_lamant/article/details/82561312
    vim /etc/ld.so.conf.d
    /usr/local/ffmpeg/lib

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    重装新版本:先卸载旧版本
        1.删除安装文件
        cd /home/***/opencv/build
        sudo make uninstall
        cd  ..
        sudo rm -r build
        2.删除所有和opencv相关文件
        sudo rm -r /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2
        cd /usr
        find . -name "*opencv*" | xargs sudo rm -rf
         3.删除代码包
        cd /home/***
        chmod a+x /home/***/opencv
        rm -r /home/***/opencv
        4.
        cd ~/opencv-3.4.6

    error while loading shared libraries: libopencv_core.so.3.4: cannot open shared object file: No such file or directory
        1.打开路径:/etc/ld.so.conf.d
        2.创建文件:OpenCV.conf文件
        3.添加自己opencv的lib路径 ldconfig (通常为/usr/local/lib)
    error: ./TopCamDetDL.so: undefined symbol: _ZN2cv3dnn23experimental_dnn_34_v143NetC1Ev

      opencv版本问题
    重新编译:
        cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..  编译通过
        make -j8
        make install






     


  • 相关阅读:
    mysql存储过程基本函数
    Java多线程程序设计详细解析
    手把手教你写Undo、Redo程序
    mysql存储过程学习总结-操作符
    深入解析ATL第二版(ATL8.0)笔记--(2.3节)
    mysql 5.0存储过程学习总结
    php判断浏览器和语言
    Windows7系统环境安装配置PHP开发环境
    Nginx环境下Php安装
    php学习
  • 原文地址:https://www.cnblogs.com/jiashengyang/p/11841138.html
Copyright © 2020-2023  润新知