配置opencv cmake
第一种使用 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的更多相关文章
- ubuntu下安装配置OpenCV
Cmake的安装 我用的是ubuntu-software自动下载安装的. Ubuntu 下安装 OpenCV 首先下载安装相关包,然后下载OpenCV 系统:ubuntu16.04 OpenCV:2. ...
- MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)
本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...
- 在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法
在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法 对于,在Linux系统下做图像识别,不像在windows下面我们可以利用Matlab中的图像工具箱来实现,我们必须借助Ope ...
- MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)(转)
本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...
- 配置OpenCV的Qt开发环境
QT&openCV系列!链接:http://www.cnblogs.com/emouse/category/449213.html 本文链接:http://blog.csdn.net/qiur ...
- Ubuntu系统---配置OpenCV
Ubuntu系统---配置OpenCV 目录 一.Ubuntu下配OpenCV 二.Ubuntu下配python-opencv 说明 上述一.二两种方式,配置OpenCV还是有区别的.按个人已有知 ...
- 配置OpenCV产生flann\logger.h(66): error C4996: 'fopen': This function or variable may be unsafe问题[zz]
使用vs2012/2013配置opencv编译出现问题: 1>------ 已启动生成: 项目: Win32ForOpenCV245, 配置: Debug Win32 ------ 1> ...
- 使用属性表:VS2013上配置OpenCV
以前,windows下配置OpenCV一直不太方便:总是要手动添加lib,添加include,还要配置PATH使得程序运行时候能找到dll文件. 每次新建一个使用OpenCV的工程都要手动添加,很麻烦 ...
- vs配置opencv
配置OpenCv: 一.新建工程 无论是mfc还是控制台程序都可以. 二.下载opencb,安装在非空格路径下面 解压出来有两个文件夹:build和source,主要用到build,build-x86 ...
随机推荐
- Linux 下的 mysql 自动备份
Linux 下实现自动备份,主要就是编写好执行备份的 shell script( *.sh )文件,设好权限(可读,可执行).然后利用 Linux 定时任务 crontab 来执行备份脚本就可以了.以 ...
- Matlab混入模式(Mixin)
Mixin是一种类,这种类包含了其他类要使用的特性方法,但不必充当其他类的父类.Matlab无疑是支持多继承的.我们可以利用 Matlab 的这种特性,实现一种叫做 Mixin 的类.MixIn的目的 ...
- ./configure & make & make install 知其所以然
最近一直在类unix系统上(Ubuntu和Mac OS)上调研第三方的一些开源库,要涉及到开源库的编译安装工作,接触最多的就是./configure & make & make ins ...
- 【转】fastjson-1.2.47-RCE
Fastjson <= 1.2.47 远程命令执行漏洞利用工具及方法,以及避开坑点 以下操作均在Ubuntu 18下亲测可用,openjdk需要切换到8,且使用8的javac > java ...
- kali2.0升级
1.登录kali2.0系统 2 2.修改软件源APT-sources.list vim /etc/apt/sources.list 3 可以删除该文件中的所有内容,也可以直接在文前添加新的APT源. ...
- android 第三方开源库 学习汇总
依赖注入框架ButterKnife https://github.com/JakeWharton/butterknife 学习过程 专注于android的View注入框架,并不支持其他方面 ...
- 【软件工程第二次作业】个人项目:WordCountPy
一.GitHub 地址 项目 GitHub 地址为:https://github.com/bytemo/WordCountTool 二.PSP表格 PSP2.1 Personal Software P ...
- Linux下getopt()函数
from https://www.cnblogs.com/qingergege/p/5914218.html 最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴. 好了,虽然啰嗦 ...
- Mysql 主从一致校验工具------Maatkit工具包
Maatkit工具包 http://www.maatkit.org/ 简介 maatkit是一个开源的工具包,为mysql日常管理提供了帮助.目前,已被Percona公司收购并维护.其中: mk-ta ...
- SpringBoot quartz定时器
<!-- 案例1 --> <!-- 定时器 --> <bean name="CodeTest" class="com.aaa.bbb.con ...