欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ubuntu 18.04最小安装OpenCV3.4.8的方法

程序员文章站 2024-03-25 11:07:22
...

OpenCV

OpenCV很好用,但是很难装好,而且对于国内用户来说,由于某些特殊原因,安装过程总会爆出缺这缺那的错误。目前经过我的仔细研究后,找到了一条算是最简安装的方法,可以用最少的包,尽可能把OpenCV安装完成。

前期准备

首先,需要一个干净的Ubuntu 18.04系统,目前我还没有在其他版本上测试过,但是在18.04的系统上,无论虚拟机还是真机都成功的完成OpenCV的安装。如果你的系统安装过OpenCV或者其他,建议先把已经安装过的包尽可能删除掉,保证安装环境的干净,减少不必要的问题产生。

$ sudo apt install build-essential

首先需要安装编译器,其次我们需要安装cmake/git/pkg-config等工具,但cmake稍微有点特别,请不要通过apt的仓库进行安装,最好选择从官网下载最新的cmake包,建议直接下载shell版本的,这样就只需要解压后,直接可用。

比如我下载的是cmake-3.16.1-Linux-x86_64.sh的版本,直接执行如下命令,就可以解压出最新版本的cmake

$ sh cmake-3.16.1-Linux-x86_64.sh

将解压出的cmake,放在/opt目录下,然后用ln命令,创建对cmake的引用。

$ sudo ln -s /opt/cmake/cmake-3.16.1-Linux-86_64/bin/cmake /usr/bin/cmake

然后执行apt,安装剩下的工具:

$ sudo apt install pkg-config git 

然后就是准备OpenCV所需要的库:

$ sudo apt install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev qt5-default libv4l-dev libeigen3-dev libavresample-dev

这些库已经经过测试,至少目前不存在无法安装的问题,至于以后就要看看官方的文档是怎么要求的了。

然后是一些可选库,建议也全部安装,因为涉及一些图片、视频压缩转码,或者对程序进行加速,所以还是需要的。

$ sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev

下载OpenCV

直接从Github上下载相关代码

$ git clone https://github.com/opencv/opencv
$ git clone https://github.com/opencv/opencv_contrib

你如果用git下载困难,也可以直接下载对应的版本包,建议选择3.4.8版本,作为v3版本的OpenCV来说,这是目前最稳定的包,而v4版本的包,目前还处于新特性开发中,可能会带来一些不确定的问题。

下载完成后,分别cd到opencv和opencv_contrib目录下,用git checkout 3.4.8切换到版本3.4.8。

CMAKE

接下来,在opencv的目录下,创建一个build目录,然后使用如下命令

cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=/opt/opencv/opencv.3.4.8 \
    -D WITH_TBB=ON \
    -D WITH_V4L=ON \
    -D WITH_QT=ON \
    -D WITH_OPENGL=ON \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
    ..

这些命令是目前测试下来最少依赖的,如果你需要其他什么特殊功能,再自行添加相关命令。

此外,cmake过程中,由于需要下载ippicv,还有其他一些编译过程中需要的文件,由于某原因的存在,可能无法下载。此时建议最好是*后做再cmake,如果无法*,那么你需要手动下载相关的包。对于ippicv还算好,这个我已经下载了,至于其他的tgg文件,你可能需要自行去下载,至于编译过程中缺少什么重要文件,在CMakeFiles文件夹里的CmakeError.log文件里,你也可以cmake的过程中用tail -f命令同步查看错误输出。

说回ippicv文件,你下载后,把它放在和opencv同级的目录里,然后cd到opencv/3rdparty/ippicv的ippicv.cmake文件,修改第47行的:

"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"

为opencv所在目录级,比如你把ippicv文件下载到了/home/pee/downloads,那么就是:

“file:///home/pee/downloads/”

这个文件我就放到了百度盘里了,就不要大家的金币了,你给我点个赞就好。

最后

编译顺利通过后,用make命令编译后,再用sudo make install进行安装。

之后,你需要把opencv.pc文件拷贝到/usr/lib/x86_64-linux-gnu/pkgconfig/下,opencv.pc文件就在你cmake的CMAKE_INSTALL_PREFIX地址的lib/pkgconfig文件下。

然后你可以执行

$ pkg-config --cflags --libs opencv

可以得到c编译所须的全部参数,至于那些库so文件怎么引导,你既可以通过设置bash的方式,也可以直接把CMAKE_INSTALL_PREFIX下的/lib文件地址添加到/etc/ld.so.conf文件中,比如:

$ echo /opt/opencv/opencv.3.4.8/lib >> /etc/ld.so.conf

然后执行:

$ sudo ldconfig -v

之后尝试编译一个简单的opencv代码就可以了

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main(int, char *argv[])
{
    Mat img;
        
    //读取原始图像
    img = imread(argv[1]);
    if (img.empty()) {
        //检查是否读取图像
        cout << "Error! Input image cannot be read...\n";
        return -1;
    }

    //创建窗口
    namedWindow(argv[1]);

    //显示图片
    imshow(argv[1], img);

    // 退出
    cout << "Press any key to exit...\n";
    waitKey(); // Wait for key press
    cvDestroyAllWindows();

    // return
    return 0;
}

执行如下命令:

$ g++ source.cpp `pkg-config --cflags --libs opencv`

百度盘地址

点我百度盘 提取码fpw4
与ippicv一起的,还有可能会出现下载失败的.cache文件夹里的东西,你可以试一试直接拉去cache文件夹的东西,并放到opencv文件夹里,改名叫.cache,祝你好运。

写在最后,关于Python

这个安装方法是不会产生任何Python可用的so的,我绝对最方便的方法,是直接用pip3 install opencv-python,别人都给你整好了,何苦为难自己呢,如果你是用Python写OpenCV的童鞋,直接一句命令搞定得了。