在Ubuntu20上安装配置Opnecv3.1.0(C++)

最近在学习一些双目立体匹配的算法,大部分开源的代码还都是基于C++的,所以我需要在我的Ubuntu20.10上安装配置C++版本的Opencv,没想到这么麻烦,所以记录一下。

我使用的环境是:

  • Ubuntu20.10
  • Opencv3.1.0
  • Clion

以下为安装步骤:

安装步骤

  1. 在Opencv官网下载source压缩包,然后在本地解压。

  2. 编译并安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 创建并进入 build 文件夹
    mkdir build
    cd bulid
    # 使用 cmake 进行编译
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

    # 多线程编译,更快。我的电脑4核,所以是j4
    make -j4

    sudo make install

    这样其实就安装好了

验证

安装好了之后需要验证一下,使用这段代码进行验证:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;

int main(int argv,char** argc){
Mat image;

//按照自己的目录
image = cv::imread("../electrode.jpg", 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}

一些bug的解决方式

  1. /usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: 没有那个文件或目录

    在cmake时,添加一项参数:-DENABLE_PRECOMPILED_HEADERS=OFF,所以我的cmake命令如下:

    1
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. -DENABLE_PRECOMPILED_HEADERS=OFF

    然后再make、make install就可以了

  2. 使用代码验证时,需要配置一下Clion的CMakelists.txt

    1
    2
    3
    find_package(OpenCV REQUIRED)

    target_link_libraries( ClionTest ${OpenCV_LIBS} ) // ClionTest是项目名
  3. 运行代码时,出现类似以下这样的错误,代表缺少一些显示窗口的库:

    1
    2
    3
    OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/wangtaocs/Downloads/opencv-3.1.0/modules/highgui/src/window.cpp, line 527
    terminate called after throwing an instance of 'cv::Exception'
    what(): /home/wangtaocs/Downloads/opencv-3.1.0/modules/highgui/src/window.cpp:527: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow

    解决办法是:

    1
    apt-get install libgtk2.0-dev pkg-config

    然后重新进行上边的步骤,编译安装opencv即可

参考

Ubuntu下安装配置opencv3.2.0 以及代码测试

OpenCV Error: Unspecified Error(The Function is not implemented)