記錄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完全編譯安裝

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容