ubuntu下安装opencv3.4以及c++编译

转自https://blog.csdn.net/gxuphf123/article/details/81121791

1. OpenCV3.4.2 下载

下载链接: https://opencv.org/releases.html

2. 安装准备

//软件源更新
sudo apt-get update 

3. 安装 gcc 和 g++ 开发环境

sudo apt-get install build-essential

查看 gcc 版本 然后安装 统一版本的 g++

gcc --version

安装 g++

sudo apt-get install g++-4.4

查看 g++ 版本

g++ --version

4. 安装构建OpenCV的相关工具

//安装cmake、git和pkg-config
sudo apt-get install cmake git pkg-config 

5. 安装常用图像工具包

//安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev 
//安装tif格式图像工具包
sudo apt-get install libtiff5-dev 
//安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev 
//安装png图像工具包
sudo apt-get install libpng12-dev 

6. 安装视频I/O包(注意最后一个包的数字“4”后面是“L”)

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

7. 安装gtk2.0(树莓派很可能下载错误,更换中科大或者清华源即可,ubuntu有可能出现包版本过高的情况,需要将依赖包降级安装)

sudo apt-get install libgtk2.0-dev

8. 安装优化函数包

sudo apt-get install libatlas-base-dev gfortran

9. 解压opencv-3.4.2,并在目录下创建Release文件夹

10. 在终端进入Release文件夹

~$ cd /home/nic/opencv-3.4.2/Release

11. CMake配置编译

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

如果以下错误:

qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file     or         directory

执行以下指令:

sudo apt-get install qt5-default

12. Make编译

sudo make

13. 安装

sudo make install

14. 环境配置添加库路径

sudo gedit /etc/ld.so.conf.d/opencv.conf 
#打开后可能是空文件,在文件内容最后添加
/usr/local/lib

15. 更新系统库

sudo ldconfig

16. 配置bash,执行如下命令

sudo gedit /etc/bash.bashrc 
# 在末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

17. 保存退出,然后执行如下命令使得配置生效

source /etc/bash.bashrc
# 激活配置然后更新database
sudo updatedb  

18. 在CLion中测试

  • 创建CMakeLists.txt文件
cmake_minimum_required(VERSION 3.10)
project(demo)
set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)
add_executable(demo main.cpp)
target_link_libraries( demo ${OpenCV_LIBS} )
  • 创建Main.cpp文件
#include 
#include 

using namespace cv;
using namespace std;

int main()
{
    Mat image;
    # 必须使用绝对路径
    image = imread("/home/nic/20171125154428073.png");
    if ( image.empty() )
    {
        cout<<"No image data!"<< endl;
        return -1;
    }
    namedWindow("Display Image");
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

OK !

你可能感兴趣的:(ubuntu,系统)