记录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

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

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完全编译安装

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容