Ubuntu(Linux)安装 OpenCV 4.4.0

  • 安装OpenCV4.4.0
  • 下载压缩包
  • 安装依赖包
  • 编译和安装
  • 配置OpenCV4.4.0
  • 测试OpenCV4.4.0
  • 最后的话


安装OpenCV4.4.0

安装最新版的 OpenCV 可以解决大部分的兼容性问题。

下载压缩包

链接:https://pan.baidu.com/s/16dLygT8zLYCJi28TKvocFw
提取码:xc6g

解压 zip 格式的源码后,在解压后的目录中进入 apps 文件夹:

unzip opencv-4.4.0.zip

安装依赖包

必须安装的依赖包:

sudo apt-get install build-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

此时,如果 apt-get 出现"软件包有未满足的依赖关系“问题。

此问题的解决办法:使用 aptitude 。

aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
运行后,不接受未安装方案,接受降级方案。这样,就可以成功安装库了。

编译和安装

此时的命令执行,我们需要在之前进入的 apps 文件夹目录下。当然,这个目录可能每个人的都不一样,以下命令的执行需要 CMakeLists.txt 文件。这个文件在我的虚拟机上是在 apps 文件夹下。所以,如果编译时报错找不到文件,请在自己的虚拟机上进行查找,然后进入相应文件夹下,进行以下指令。

windows opencv库打包 opencv安装包_依赖包

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
sudo make install

其中,第二个指令 sudo make 可能执行的时间比较长,我的Ubuntu执行了2个多小时才结束。

配置OpenCV4.4.0

sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

测试OpenCV4.4.0

首先新建一个 QT 文件,这里创建了有默认代码的 QT 文件,然后打开 pro 文件,为其配置 opencv:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
 
SOURCES += \
        main.cpp
//这里的路径请根据自己的实际情况进行修改
//这里的路径应该是逐级写的,写的是存放库文件的路径(如理解错误,请大佬指出)
//我的路径就是:/usr/local/include/opencv4/opencv2 
//详见下面的第一张图
INCLUDEPATH += /usr/local/include \
               /usr/local/include/opencv4 \
               /usr/local/include/opencv2
//这里的路径请根据自己的实际情况进行修改
//这个应该是同样的道理
//我的路径就是:/usr/local/lib
//详见下面第二张图              
LIBS += /usr/local/lib/libopencv_highgui.so \
        /usr/local/lib/libopencv_core.so    \
        /usr/local/lib/libopencv_imgproc.so \
        /usr/local/lib/libopencv_imgcodecs.so

windows opencv库打包 opencv安装包_依赖包_02


windows opencv库打包 opencv安装包_依赖包_03


测试源程序 main.cpp:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    Mat img = imread("群岛.jpg");//存放图像的路径
    line(img,Point(1,1),Point(250,250),Scalar(0,0,255),5);//画一条直线
    namedWindow("island",0);//创建窗口
    resizeWindow("island", 1000, 500); //创建一个1000*500大小的窗口
    imshow("island",img);//在创建的窗口中显示图片
    waitKey(0);
    return 0;
}

需要注意的是:读取图片的时候,如果像上面的程序一样写相对路径的话,需要将图片放入项目的 debug 目录下,不能放在源程序所在的目录下。否则,请写绝对路径。下面,还会展示一个绝对路径的例子。

测试结果:

windows opencv库打包 opencv安装包_windows opencv库打包_04


绝对路径的例子源代码:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    Mat img = imread("/mnt/hgfs/My Share/冬景.jpg");//存放图像的路径
    line(img,Point(1,1),Point(250,250),Scalar(0,0,255),5);//画一条直线
    namedWindow("winter",0);//创建窗口
    resizeWindow("winter", 1000, 500); //创建一个1000*500大小的窗口
    imshow("winter",img);//在创建的窗口中显示图片
    waitKey(0);
    return 0;
}

测试结果:

windows opencv库打包 opencv安装包_依赖包_05