美文网首页
记录Ubuntu编译安装opencv

记录Ubuntu编译安装opencv

作者: V_爱一世春秋 | 来源:发表于2020-01-13 10:23 被阅读0次

    文章目录:

    前言

    卸载已经安装的OpenCV

    安装依赖项

    下载OpenCV和OpenCV_contrib

    编译和安装带contrib的OpenCV

    问题集锦

    测试Opencv3

    参考资料

    前言:

    python训练好了模型,生成了可读取的pb文件,如果用C++来调pb,就需要编译安装opencv了,先说一下我的环境,

    ubuntu16.04+CUDA-9.0,tensorflow-gpu1.12,源码编译的tensorflow为1.9

    卸载已经安装的OpenCV

    先确定一下,之前是否编译过OpenCV

    pkg-config --modversion opencv   #可查看opencv版本信息

    如果没有,这步可以跳过了

    先进入到安装opencv的目录,找到build文件夹

    cd build

    sudo make uninstall

    cd ..

    sudo rm -r build

    rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

    安装依赖项

    sudo apt-get install build-essential

    sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev qt5-default

    sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

    我在执行第三个命令时出现了如下问题

    libdev

    这是因为python-dev没有安装,这个不能用pip install安装,只能用sudo apt-get  install安装,在装之前需要安装aptitude工具

    sudo apt-get install aptitude        #安装aptitude工具

    sudo aptitude install python-dev  #使用aptitude安装python-dev

    有两个地方需要注意,如下所示:

    python-dev

    这里附上,我解决此问题的地址https://www.cnblogs.com/ymjyqsx/p/6194968.html,以示对作者的尊重~~

    下载OpenCV和OpenCV_contrib

    好了,依赖库安装完了,就需要下载OpenCV和OpenCV_contrib了

    附一下OpenCV官方地址,我下载的是3.4.6版本

    opencv-3.4.6

    对应contrib官方地址

    下载后解压

    unzip opencv-3.4.6.zip

    unzip opencv_contrib-3.4.6.zip opencv-3.4.6/      #解压到opencv目录下

    cd opencv-3.4.6

    mkdir build

    cd build 

    编译和安装带contrib的OpenCV

    附一下这篇博客,作者提到,在opencv\modules\cudev\include\opencv2\cudev\common.hpp中添加以下头文件包含

    #include <cuda_fp16.h>

    我按照文中所说,指定cmake 编译后,make无法正确执行,

    根据错误提示,修改了cmake内容如下,错误问题后面会有所描述

    cmake -D CMAKE_BUILD_TYPE=Release -D WITH_PROTOBUF=OFF -D WITH_EIGEN=OFF -D BUILD_opencv_xfeatures2d=OFF -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.6/modules ..

    make 

    make install 

    问题集锦:

    期间遇到了如下问题:

    1、fatal error: Eigen/Eigenvalues: No such file or directory

    eigen明明我已经安装了,make时确报出找不到eigen文件。。。。

    附上我安装eigen时参考的地址,以示对作者的尊重

    确定eigen已经正确安装,make编译仍然出错的

    在cmake的时候可以加上WITH_EGEN=OFF

    2、编译时提示opencv_contrib缺少boostdesc_bgm.i等文件

    错误提示:

    ~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No suchfileor directory

    这时如果查看build文件夹下的CMakeDownloadLog.txt,会发现其中指出boostdesc_bgm.i缺失,到其指定地址下载。

    或者到这个下载镜像下载:boostdesc_bgm.i,vgg_generated_48.i等.rar,放在 opencv_contrib/modules/xfeatures2d/src/ 路径下

    boostdesc_bgm.i

    3、fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory

    解决方法:

    1、查找该文件以及路径:

    find . -name "cuda.hpp"

    会发现文件存在: ./opencv-3.4.6/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp

    2、找到上述文件的路径,替换出错文件中引用cuda.hpp的位置代码即可。

    注意:

    1、 有两个文件引用了该cuda.hpp文件所以要改两次,改报错文件前可以先备份。

    2、安装opencv和对应opencv_contrib文件时可以直接将opencv_contrib中所有文件复制到opencv文件夹中,不会存在覆盖问题。

    4、报错 fatal error: opencv2/xfeatures2d.hpp: No such file or directory

    xfeatures2d_error

    我按照这篇文章所说,单独编译了opencg_contrib,放入opencv文件夹中,然而并没有解决我的问题

    我的目录中已经存在了此文件,确仍不能正确调用

    features2d

    最后设置cmake时指定

    -D BUILD_opencv_xfeatures2d=OFF

    解决了问题

    make 成功

    添加路径:

    安装完成之后,添加路径。

            sudo vim /etc/ld.so.conf.d/opencv.conf

    在末尾添加如下内容:

              /usr/local/lib

    保存之后执行:

              sudo ldconfig

              sudo vim /etc/bash.bashrc

    在末尾添加如下内容:

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

            export PKG_CONFIG_PATH

    source一下,使修改立即生效。

            source /etc/bash.bashrc

    查看opencv版本   

        pkg-config --modversion opencv 

    测试Opencv3

    1、运行命令:pkg-config --cflags --libs opencv 出现下面信息:

    opencv

    2、运行一个最简的程序:

    DisplayImage.cpp

    #include <cv.h>

    #include <highgui.h>

    #include <opencv2/core/core.hpp>

    #include <opencv2/highgui/highgui.hpp>

    using namespace cv;

    int main( int argc, char** argv )

    {

        Mat image;

        image = imread( argv[1], 1 );

        if( argc != 2 || !image.data )

        {

            printf( "No image data \n" );

            return -1;

        }

        namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );

        imshow( "Display Image", image );

        waitKey(0);

        return 0;

    }

    g++编译方式测试:
    1、执行命令:

    g++ DisplayImage.cpp -o display `pkg-config --cflags --libs opencv`

    2、显示图片

    display

    执行./display 0.jpg,可以显示图片,证明OpenCV安装成功

    display image

    参考资料

    ubuntu 下配置opencv问题-Eigen/Eigenvalues: No such file or directory

    ubuntu16.04+eigen3安装

    编译OpenCV提示opencv_contrib缺少boostdesc_bgm.i等文件

    fatal error: boostdesc_bgm.i: No such file or directory #130

    安装opencv3.4.0报错

    How to build OpenCV with extra modules

    ubuntu 16.04 OpenCV完全编译安装

    相关文章

      网友评论

          本文标题:记录Ubuntu编译安装opencv

          本文链接:https://www.haomeiwen.com/subject/hzfmactx.html