(一)OpenCV学习笔记——Linux下编译运行opencv程序

  最近在学习OpenCV,写点笔记总结一下,我用的学习环境是Ubuntu16.04+KDvelop4.7+OpenCV3.2.0。
  Linux下的OpenCV程序的编译有两种方式。一种是g++,另一种是cmake,自己在这里直接采用的是KDvelop4.7,使用该IDE的好处如下:1、能够加载opencv的库头文件,像在写#include “opencv2/opencv.hpp” 。2、在编写opencv程序时,能够代码自动补全,很方便。3、使用该IDE,新建C++工程时,能够自动新建CMakeLists.txt,只需要修改它加载opencv的编译库,就能够在该IDE上运行opencv的程序。自己还在其他的C++ IDE ,如CLion同样也OK的。下面介绍具体实现过程。
 
  新建一个test.cpp程序代码如下:

#include
using namespace cv;//下面的所有cv相关类型不用加上前缀了
int main(){
    Mat img =imread("/home/douxiao/Desktop/opencvtest/demo1/001.jpg");//声明Mat变量,并读取图片,imread中需要传入图片的绝对路径
    imshow("image",img);//在窗口中显示载入的图片
    waitKey();//等待按键
    return 0;
}

第一种方法使用g++命令行参数法

$ gcc test.cpp -o test `pkg-config --cflags --libs opencv`
$ ./test //运行,显示图片

  在上面的编译命令中我们其实用到了一个工具“pkg-config”,它主要有以下几个功能:
检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。 获得编译预处理参数,如宏定义,头文件的位置。 获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。 自动加入所依赖的其它库的设置有了这个工具之后我们的编译就很方便了(不过在此之前你要确保你安装的OpenCV的安装链接库文件的目录下有一个pkgconfig文件夹,在该文件夹里面有个opencv.pc的文件,其实这就是pkg-config下OpenCV的配置文件)。
  使用pkg-config时,选项–cflags 它是用来指定程序在编译时所需要头文件所在的目录,选项 –libs则是指定程序在链接时所需要的动态链接库的目录。
 
下面主要介绍第二方法,使用CMake:

  第一步:
  使用KDvelop新建一个C++工程,建工程的教程很多,自行google.
  我的文件路径如下图:
(一)OpenCV学习笔记——Linux下编译运行opencv程序_第1张图片
 
  在建工程时自己的路径目录如以下截图:
 
  这里写图片描述
  (一)OpenCV学习笔记——Linux下编译运行opencv程序_第2张图片

工程截图,将mian.cpp和CMakeLists.txt改为如下:

(一)OpenCV学习笔记——Linux下编译运行opencv程序_第3张图片

(一)OpenCV学习笔记——Linux下编译运行opencv程序_第4张图片

#这是对CMake工具最低版本要求,这里我们要检查下我们的CMake工具的版本信息,我们可以使用命令“cmake --version”查看
cmake_minimum_required(VERSION 2.6)
project(test)#这是建立一个工程项目,括号里面时工程名,工程名我们可以任意给,最后程序编译出来的可执行文件就是这个名字
FIND_PACKAGE(OpenCV  REQUIRED )#用Cmake查找opencv包
set(CMAKE_CXX_STANDARD 11)#用C++11标准库编译
set(SOURCE_FILES main.cpp)
add_executable(test ${SOURCE_FILES})#这里括号里面的两个参数分别是工程项目名和我们要编译文件名的意思,记住中间一空格键隔开
TARGET_LINK_LIBRARIES(test ${OpenCV_LIBS})#这是我们链接到OpenCV库的环节,我们只要更改前面第一个参数位我们的工程项目名即可

编译运行:

(一)OpenCV学习笔记——Linux下编译运行opencv程序_第5张图片

添加文件:

(一)OpenCV学习笔记——Linux下编译运行opencv程序_第6张图片

显示图像如下:

(一)OpenCV学习笔记——Linux下编译运行opencv程序_第7张图片

成功,
今天的总结就到这吧!

你可能感兴趣的:(opencv)