opencv是我们日常开发中经常使用的一种库,常用于处理一些图像信息,我在前几天安装的过程中遇到了一些问题,不过最终还是安装好了,所以在这里记录一下自己的安装过程
在github上下载opencv与opencv_contrib资源包(链接在下面),注意,opencv的版本一定要与contrib对应,此外,opencv4需要处c++ 11的支持,所以如果没有c++ 11, 可以下载4.0以下的版本,再git上切换版本的位置在下图中,先点击master,切换到tags面板,再选择相应的版本下载即可
opencv opencv_contrib
sudo apt-get installbuild-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
注意,在执行上述第三条命令的时候,可能会出错,提示E:Unable to locate package等错误,此时需要添加源,执行下述语句就可以了
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update
执行完上述命令后,再次执行第三条命令就成功了
首先将opencv_contrib移动到opencv目录下,为了方便对两个文件夹改名,分别去除其版本号(例如将opencv3.4.5改为opencv),新建文件夹build,进入,在其中打开终端执行命令
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D DOPENCV_GENERATE_PKGCONFIG=ON ..
等待上述命令执行完后,同样在build文件夹下执行make命令,这个过程会花挺多的时间,耐心等待,但是你可能会遇到错误提示:缺少boostdesc_bgm.i文件,这时在下面百度网盘链接下载几个文件,下载完成后将其解压,并将所有.i文件复制到opencv/opencv_contrib/modules/xfeatures2d/src/ ,然后make clean后再次make
链接: 百度网盘 密码: ipk5
同样你可能还会遇到提示fatal error:opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录错误,这很有可能是你没有安装cuda的原因,所以此时先安装cuda就可以解决这个问题了,安装完成后执行下述命令
make clean
make
make install
当上述两个问题没有解决的时候,如果你用不到贡献库,此时可以选择只安装opencv:先删除opencv包,重新解压一个新的opencv包(opencv_contrib用不到了,不需要解压),再在里面新建一个build文件夹,在build文件夹下执行下述命令就可以完成安装了
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
suao make install
在第一步在网上提供两种不同配置方式,因为我两个都进行了但是不清楚具体哪个是有用的,所以建议两个都进行配置一下
方式1
sudo gedit /etc/ld.so.conf.d/opencv.conf
打开可能是空的,在文末添加
/usr/local/lib
方式2
sudo gedit /etc/ld.so.conf
打开也可能是空的,在文末添加
include /usr/loacal/lib
执行完后要更新系统的共享链接库
sudo ldconfig
接着修改bash.bashrc文件
sudo gedit /etc/bash.bashrc
在文末添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存,这时先不要关闭这个bash文件,直接在刚才的终端执行下述语句
source /etc/bash.bashrc
关闭打开的bsh文件
在Home下创建文件夹opencv_lena,进入执行下述命令编辑文件
gedit DisplayImage.cpp
在其中输入如下代码
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out \n" );
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
保存关闭,还是在此处执行命令编辑文件
gedit CMakeLists.txt
在其中添加如下代码(VERSION2.8不需要修改)
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${
OpenCV_LIBS} )
编译(在opencv-lena文件夹下在终端打开执行)
cmake .
make
随便找一张图片,将其命名为lena.jpg,并将其放在opencv-lena下,注意,上述的cpp文件,txt文件与jpg文件都在这个文件下,在opencv_lena下打开终端,执行下述命令,如果能看到图片弹出就证明配置成功了
./DisplayImage lena.jpg