ubuntu编译安装opencv4.5.1(C++)

1. 在https://github.com/opencv/opencv上下载opencv源码。包括opencv4.5.1和opencv-contrib4.5.1(也可以不用),其中opencv是主体,opencv-contrib包含了一些不是足够稳定的算法,没有集成到opencv中。

2. 把下载的源码包解压可以看到opencv-4.5.1和opencv_contrib-4.5.1两个文件夹,将opencv_contrib-4.5.1目录移到opencv-4.5.1目录下。

在终端安装下列依赖库:

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

3. 在opencv-4.5.1目录下,创建文件夹build。然后进入build目录,执行cmake命令

cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D ENABLE_CXX11=1 -D OPENCV_EXTRA_MODULES_PATH=../opencv-4.5.1_contrib/modules -D OPENCV_ENABLE_NONFREE=True ..


等待cmake生成相应的工程文件,如果此过程报错,一般是Makefile:160: recipe for target 'all' failed  就用下列cmake命令代替之前的

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_SHARED_LIBS=OFF -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..

4. 使用make来编译。

make -j8

-j8是同时使用8核CPU来执行编译过程,这样速度比较快,具体需要根据自己的电脑情况修改。这个命令应该是编译build下所有的子工程。

5. 编译install工程

sudo make install

这个命令是只编译install这个工程,编译完成就安装成功了。

6. 配置pkg-config路經

经过上面的步骤后,在/usr/local/lib/pkgconfig下生成了opencv4.pc文件,这个文件很重要,里面记录了OpenCV头文件、库文件的路經。需要进行如下配置:

#进入 bash.bashrc
sudo gedit /etc/bash.bashrc

#在文件最后添加如下内容

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

#在终端更新

sudo updatedb

7.  配置库路經

#打开下列文件

sudo gedit /etc/ld.so.conf.d/opencv.conf

# 添加lib路經

/usr/local/lib

# 更新

sudo ldconfig

查看opencv版本号:

pkg-config --modversion opencv4

实例演示:

写了一个简单的imread函数,编译过不了,他喵的。可以直接用Mat类型,但用imread和imshow都会编译出错。

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
    string path = "/home/elvis/Pictures/4.png";
    cout<<"paht: "<<path<<endl;
    Mat img = imread(path);
    Mat m(240, 320, CV_8UC3, Scalar(175, 175, 175));
    imshow("win", m);
    waitKey(0);
    return 0;
}



后来我没用那两个cmake命令,就直接在build文件夹运行cmake ..,也就是说按照默认的CMakeLists.txt文件去cmake,重新安装了opencv,就不报错了,一切顺利。

猜你喜欢

转载自blog.csdn.net/Eyesleft_being/article/details/118496166