配置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链接
转载于:https://www.cnblogs.com/wangshuyi/p/11405364.html
配置opencv cmake相关推荐
- android studio cmake opencv_Mac下安装及配置OpenCV环境(Xcode)
Mac下安装及配置OpenCV环境(Xcode) OpenCV (Open Source Computer Vision Library) OpenCV是Intel开源计算机视觉库.它由一系列 C 函 ...
- CMake配置OpenCV时,显示错误:find_host_package(PythonInterp 2.7)' found wrong Python version
CMake配置OpenCV时,显示错误:find_host_package(PythonInterp 2.7)' found wrong Python version 问题描述: CMake配置Ope ...
- CUDA support is required (OpenCV CMake parameter ‘WITH_CUDA‘ must be true).
运行下面示例代码,会出现上述问题,说明没有找到CUDA环境,解决方法:1,确定opencv-cuda安装配置正确,2,一定要创建CUDA程序,比如在VS中,不能创建C++程序来跑CUDA的程序. /* ...
- CentOS系统上编译、安装、配置OpenCV
声明:本文是个人根据相关博客资料加上自己的经验整理,在此分享以供大家学习交流! 假设CentOS系统下的CodeBlocks已经安装完成,下面我们要在CentOS平台下编译OpenCV,并在CodeB ...
- [OpenCV] -- win7下配置OpenCV的Qt开发环境
http://blog.csdn.net/qiurisuixiang/article/details/8665278 编译.配置OpenCV的工程相当曲折,编译OpenCV不下5次,一开始还以为是自己 ...
- QT配置opencv开发环境
0 编译.配置OpenCV的工程相当曲折,编译OpenCV不下5次,一开始还以为是自己的配置.编译步骤有问题,后来发现原来是自己电脑装的Qt Creator版本有点低,里面的MingW版本较低,而Op ...
- OpenCV android sdk配置OpenCV android NDK开发实例
OpenCV android sdk配置OpenCV android NDK开发实例 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/det ...
- 配置OpenCV的Qt开发环境
QT&openCV系列!链接:http://www.cnblogs.com/emouse/category/449213.html 本文链接:http://blog.csdn.net/qiur ...
- 【C++版Opencv】【Ubuntu】VScode配置Opencv
1 安装基本工具 sudo apt install -y g++ sudo apt install -y cmake sudo apt install -y make sudo apt install ...
最新文章
- Cookie和Session的区别
- UIKeyboardTypeNumberPad 数字键盘添加完成按钮
- POJ 3580 SuperMemo
- [蓝桥杯][算法提高VIP]凶手-思维
- 工厂设计模式和策略设计模式_设计模式:策略
- Docker自动补全容器名
- Spring笔记——使用Spring进行面向切面(AOP)编程
- java编程过程——流程图
- java星号心形代码_用符号拼一个完整的大爱心 它起源于中国的甲骨文的心字
- macbook 如何卸载 homebrew
- html如何制作艺术字体,影视动画制作软件怎么制作多彩立体字 艺术字体制作软件 字体渐变效果...
- Linux编程技术总结
- HBuilder软件下载及安装教程
- 谢国忠正在走入一种非理性思维状态
- systrace的简单介绍及使用
- python用for循环输出直角三角形_使用FOR循环语句在屏幕上输出一个由星号组成的直角三角形...
- xsplit PHP扩展
- layui.layedit富文本编辑器
- 【复现】23春云曦期中考核 Writeup
- 联想王震宇:联想企业网盘3.5版本的功能亮点
热门文章
- python pexpect pxssh scp_Python 的 pexpect 使用 scp 把文本文件传一半就不传了,怎么办?...
- 每日一题(29)—— 如何引用一个已经定义过的全局变量
- opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法
- 【Pytorch神经网络实战案例】07 预测泰坦尼克号上生存的乘客
- vb 根据pid获取句柄_C++中避免返回指向对象内部的句柄(handles)
- python提取txt中的字符串数据_python 从字符串中提取数值
- LeetCode 5268. 找出两数组的不同(set)
- 牛客 XOR和(找规律)
- LeetCode MySQL 1321. 餐馆营业额变化增长(over窗口函数)
- 蒙特卡罗法近似求解圆周率π