原来一直是在Windows下用的opencv,按照网上大神的方法,在工程里加入各种依赖库,直接VS生成可执行文件就ok。

但是在Ubuntu下安装使用opencv已经被搞了两天了……总结一下~~

0、测试opencv是否安装成功

可以通过下面的命令查看opencv的版本信息,如果有输出版本信息的话,说明到目前为止是顺利的。

pkg-config --modversion opencv

1、准备简单的测试程序

为了避免各种opencv版本的不同使用,这里就不用显示图片的程序了,直接打印一个3*3Mat矩阵出来。上代码,保存文件名为test.cpp

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

int main()
{
    Mat a(Size(3,3),CV_8UC1);
    cout<<a;
    return 0;
}

2、放大招蓄力ing

2.1 第一种方法 Command Line(命令行参数的方法)

g++ test.cpp -o test `pkg-config --cflags --libs opencv`
./test

话不多说,先放结果: 

linux配置opencv python的环境变量 linux使用opencv_#include

 

解释下命令行:上述的命令行中和普通的C++程序不同的是,后面加了pkg-config参数,科普下:pkg-config主要是将第三方库的头文件和库文件位置指出来,然后传给编译器使用,一般在是linux开始编译和寻找链接库时用到。在linux终端输入命令"pkg-config opencv --libs --cflags",得到输出结果如下:【是不是和windows下的使用感觉似曾相识了,这一步就好比windows下导入属性表的过程,即添加opencv的依赖库和include路径】

linux配置opencv python的环境变量 linux使用opencv_可执行文件_02

再具体一点,把参数cflags和libs拆开来看:

pkg-config opencv --cflags

linux配置opencv python的环境变量 linux使用opencv_#include_03

pkg-config opencv --libs

linux配置opencv python的环境变量 linux使用opencv_可执行文件_04

选项 --cflags它是用来指定程序在编译时所需要头文件所在的目录,选项 --libs则是指定程序在链接时所需要的动态链接库的目录。

 

2.2 第二种方法 CMake工具

step1:新建一个目录用于存放我们的代码文件test.cpp

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

int main()
{
    Mat a(Size(3,3),CV_8UC1);
    cout<<a;
    return 0;
}

 

step2:添加cmake工具编译时所需的文件CMakeLists.txt

    CMakeLists.txt文件中的具体内容如下(注:这个文件你可以到你的OpenCV源代码解压出来的文件夹下的/samples/c/example_cmake/文件夹下拷过来,然后再做修改)。这里主要记录下CMakeLists.txt文件内容的大概意思

cmake_minimum_required(VERSION 2.8)  //这是对CMake工具最低版本要求,可用命令cmake --version查看当前cmake版本

project( test )                  //建立一个工程项目,括号里面是工程名,可以任意给,最后程序编译出来的可执行文件就是这个名字

find_package( OpenCV REQUIRED )  //这是cmake用来查找opencv包用的,不用改

add_executable( test test.cpp )  //这里括号里面的两个参数分别是工程项目名和我们要编译文件名,中间用空格键隔开

target_link_libraries( test ${OpenCV_LIBS} )  //这是我们链接到OpenCV库的环节,只需要改第一个参数工程项目名即可

注意:find_package( OpenCV REQUIRED ),这是cmake用来查找opencv包用的,会在系统中寻找包含OpenCVConfig.cmake文件的路径,如果存在多个opencv版本,或者有多个账户安装了opencv在不同的路径下,可能会存在冲突。因此有时需要自定义指定OpenCV的路径,使用set(OpenCV_DIR /opt/opencv-2.4.11/share/OpenCV)语句指定路径即可。这里表示路径是/opt/opencv-2.4.11/share/OpenCV。

Step3: 输入命令"cmake ."对当前的工程进行编译,千万不能忘记“点”;

linux配置opencv python的环境变量 linux使用opencv_#include_05

 

Step4: 输入命令"make"生成可执行文件 

linux配置opencv python的环境变量 linux使用opencv_OpenCV_06

 

Step5: 运行可执行文件test 

linux配置opencv python的环境变量 linux使用opencv_#include_07