第一种使用 find_package的方法
示例代码如下:
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )

# 声明一个 cmake 工程
project( pro )

# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )

#添加OPENCV库
#指定OpenCV版本,代码如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代码如下
find_package(OpenCV REQUIRED)

#添加OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})

#显示OpenCV_INCLUDE_DIRS的值
message(${OpenCV_INCLUDE_DIRS})

# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( main main.cpp )

# 将库文件链接到可执行程序上
target_link_libraries( main ${OpenCV_LIBS})

代码部分解释
find_package(OpenCV REQUIRED)会在Ubuntu系统中找到OpenCVConfig.cmake,该文件定义了OpenCV_INCLUDE_DIRS和OpenCV_LIBS 等变量,因而可以使用 include_directories和target_link_libraries来访问这两个变量。

可以通过打开terminal输入locate OpenCVConfig.cmake来找到这个.cmake文件,用以确认系统确实安装了OpenCV.

第二种使用link_libraries(opencv库名的方法)
既然我们知道了find_package的作用是找到后缀名为.cmake的文件,以此来获取其中的引用目录(.h文件的路径)和库的路径(例如“ /usr/lib/x86_64-linux-gnu/libopencv_video.so”),那么我们也可以选择直接使用正确路径的引用目录和库目录。

通过include_directories( your/path/to/OpenCV/include)来正确添加引用目录
通过link_directories( your/path/to/OpenCV/lib) 来添加库的目录
通过link_libraries(name1 name2 name3)来实现库的链接
有了link_libraries(name1 name2 name3),就不需要target_link_libraries(main ${PATH/NAME})了。

示例代码如下(示例中使用的是ROS系统安装的opencv3的路径和库)
cmake_minimum_required( VERSION 2.8 )
project( pro )
set( CMAKE_BUILD_TYPE "Release" )
set( CMAKE_CXX_FLAGS "-std=c++11" )
include_directories(
"/opt/ros/kinetic/include/opencv-3.3.1-dev/"
)
#添加动态库的路径
link_directories("/opt/ros/kinetic/lib/x86_64-linux-gnu")
#有了上面的路径,下面就可以直接写opencv_aruco3这样的名字了
#opencv_xxxxx不带d和带d分别表示release和debug版本。
link_libraries(
opencv_aruco3
opencv_bgsegm3
opencv_bioinspired3
opencv_calib3d3
opencv_ccalib3
opencv_core3
opencv_cvv3
opencv_datasets3
opencv_dpm3
opencv_face3
opencv_features2d3
opencv_flann3
opencv_fuzzy3
opencv_hdf3
opencv_highgui3
opencv_imgcodecs3
opencv_img_hash3
opencv_imgproc3
opencv_line_descriptor3
opencv_ml3
opencv_objdetect3
opencv_optflow3
opencv_phase_unwrapping3
opencv_photo3
opencv_plot3
opencv_reg3
opencv_rgbd3
opencv_saliency3
opencv_shape3
opencv_stereo3
opencv_stitching3
opencv_structured_light3
opencv_superres3
opencv_surface_matching3
opencv_text3
opencv_tracking3
opencv_video3
opencv_videoio3
opencv_videostab3
opencv_viz3
opencv_xfeatures2d3
opencv_ximgproc3
opencv_xobjdetect3
opencv_xphoto3
)
#生成程序
add_executable( main main.cpp )
#不需要target_link_libraries()了

在写代码过程中发现的东西
link_directories()单单用这条命令基本没什么意义。一般这里面填写的参数之前也在$PATH中包含了。

link_libraries里面可以有多个库的名字。

find_library指令也是用来找库进行链接的。用法如下:
find_library (<VAR> name1 [path1 path2 ...])
find_library官方说明
示例 find_library(OpenCV_LIBS opencv_aruco3 "/opt/ros/kinetic/lib/x86_64-linux-gnu" )
意为:在路径/opt/ros/kinetic/lib/x86_64-linux-gnu中寻找名为libopencv_aruco3.so的库,将其命名为OpenCV_LIBS。
正如find_library这个名字所象征的,它只能找一个库,不能同时找多个库,虽然官网有示例说可以加入option实现,但我没有成功。它不能实现类似于aux_source_directory(. SRC)的功能

find_library()由于只是将某个so文件映射为某个指定的变量,比如将/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_aruco3.so映射为OpenCV_LIBS,因而在使用这个libopencv_aruco3.so时,就需要加入target_link_libraries(main ${OpenCV_LIBS})来使这个库成功和main链接

配置opencv cmake的更多相关文章

  1. ubuntu下安装配置OpenCV

    Cmake的安装 我用的是ubuntu-software自动下载安装的. Ubuntu 下安装 OpenCV 首先下载安装相关包,然后下载OpenCV 系统:ubuntu16.04 OpenCV:2. ...

  2. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  3. 在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法

    在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法   对于,在Linux系统下做图像识别,不像在windows下面我们可以利用Matlab中的图像工具箱来实现,我们必须借助Ope ...

  4. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)(转)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  5. 配置OpenCV的Qt开发环境

    QT&openCV系列!链接:http://www.cnblogs.com/emouse/category/449213.html 本文链接:http://blog.csdn.net/qiur ...

  6. Ubuntu系统---配置OpenCV

    Ubuntu系统---配置OpenCV 目录 一.Ubuntu下配OpenCV 二.Ubuntu下配python-opencv   说明 上述一.二两种方式,配置OpenCV还是有区别的.按个人已有知 ...

  7. 配置OpenCV产生flann\logger.h(66): error C4996: 'fopen': This function or variable may be unsafe问题[zz]

    使用vs2012/2013配置opencv编译出现问题: 1>------ 已启动生成: 项目: Win32ForOpenCV245, 配置: Debug Win32 ------ 1> ...

  8. 使用属性表:VS2013上配置OpenCV

    以前,windows下配置OpenCV一直不太方便:总是要手动添加lib,添加include,还要配置PATH使得程序运行时候能找到dll文件. 每次新建一个使用OpenCV的工程都要手动添加,很麻烦 ...

  9. vs配置opencv

    配置OpenCv: 一.新建工程 无论是mfc还是控制台程序都可以. 二.下载opencb,安装在非空格路径下面 解压出来有两个文件夹:build和source,主要用到build,build-x86 ...

随机推荐

  1. 微信小程序环境配置和开发!!

    1.登陆微信公众平台小程序,下载 普通小程序开发者工具.或者 小游戏开发者工具. 2.新建项目需要填以下几点,然后初始demo如下,注意rpx是分成750份的单位. 3.点击预览,用微信扫描二维码,代 ...

  2. 分析mybatis中 #{} 和${}的区别

    分析方法: 在 GenericTokenParser这个类的parse方法的这一行下个断点调试一下就明白了 builder.append(handler.handleToken(content)); ...

  3. C++ OpenSSL 之二:生成RSA文件

    1.等同于生成private key: openssl genrsa -out "save_path" 2048 2.代码如下 bool MakeRsaKeySSL(const c ...

  4. windows开启PostgreSQL数据库远程访问

    1.在PostgreSQL安装目录下data文件夹,打开pg_hba.conf文件,新增允许访问的ip 2.打开postgresql.conf,将listen_addresses = 'localho ...

  5. properties文件属性值通过xml文件为 java entity属性赋值

    一.通过xml配置文件进行赋值: 举个栗子,一目了然: 1.1 properties文件: 1.2 xml配置文件,将properties属性与java entity属性相关联:(这是一个新建的xml ...

  6. USB设备驱动程序1

    目的:USB鼠标用作按键,左键相当于字母L,右键相当于字母S,中键相当于Enter.如何来实现?用到输入子系统:1)分配input_dev2)设置3)注册4)硬件相关操作对于USB鼠标来说,硬件操作应 ...

  7. discuz x3.2简化的搜索框代码

    这是在做一个模板时改的,并不代表这是一个美化或者优化,只是特殊情况下的需要.只有一个搜索框,默认帖子搜索,无搜索按钮,输入内容直接回车搜索. <!--{if $_G['setting']['se ...

  8. SpringBoot——IDEA使用 Spring Initializer快速创建项目【四】

    前言 使用Spring Initializer快速创建项目 步骤 首先肯定是打开我们的IDEA的编辑器呀~ 创建项目 File -> New -> Project Spring Initi ...

  9. VMware下安装Ubuntu虚拟机

    ubuntu系统是以桌面应用为主的.当下最火的linux操作系统,具有实用的界面,并且完全免费. 在Ubuntu的 Linux 世界里,已经不再只是简陋的界面+命令行,而是一款华丽时尚且无比实用的操作 ...

  10. RHCE试题解析

    环境准备 yum-config-manager --add-repo=ADDREPO vim /etc/yum.conf gpgcheck=0(1=on,0=off)   增加指定repo源,关闭签名 ...