记录Ubuntu编译安装opencv

文章目录:

前言

卸载已经安装的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

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

记录Ubuntu编译安装opencv_第1张图片
python-dev

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

下载OpenCV和OpenCV_contrib

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

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

记录Ubuntu编译安装opencv_第2张图片
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

我按照文中所说,指定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/ 路径下

记录Ubuntu编译安装opencv_第3张图片
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文件夹中,然而并没有解决我的问题

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

记录Ubuntu编译安装opencv_第4张图片
features2d

最后设置cmake时指定

-D BUILD_opencv_xfeatures2d=OFF

解决了问题

记录Ubuntu编译安装opencv_第5张图片
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

#include

#include

#include

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)