配置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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python enumerate用法总结(转)

原文链接&#xff1a;https://blog.csdn.net/churximi/article/details/51648388 enumerate()说明 enumerate()是python的内置函数enumerate在字典上是枚举、列举的意思对于一个可迭代的&#xff08;iterable&#xff09;/可遍历的对象&#xff08;如列表、字符串&#xff09;&…

特约专栏丨孙茂松教授——自然语言处理一瞥:知往鉴今瞻未来

来源&#xff1a;中国人工智能学会文 &#xff1a;孙茂松人类语言&#xff08;即自然语言&#xff09;的重要性无论怎么讲都不为过。社会生物学之父爱德华威尔逊曾说过&#xff1a;“语言是继真核细胞之后最伟大的进化成就”。科普畅销书《信息简史》的作者詹姆斯格雷克也深刻地…

安全隐患:神经网络可以隐藏恶意软件

来源&#xff1a;AI科技大本营&#xff08;ID:rgznai100&#xff09;编译&#xff1a;禾木木凭借数百万和数十亿的数值参数&#xff0c;深度学习模型可以做到很多的事情&#xff0c;例如&#xff0c;检测照片中的对象、识别语音、生成文本以及隐藏恶意软件。加州大学圣地亚哥分…

ASP.NET MVC教程四:ASP.NET MVC中页面传值的几种方式

准备 在Models文件夹里面新添加Student实体类&#xff0c;用来模拟从Controller向View传递数据&#xff0c;Student类定义如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Web;namespace MVCStudyDemo.Models {public clas…

量子计算,后摩尔时代计算能力提升的解决方案

来源&#xff1a;微信公众号蓝海长青智库原载于《学习时报》2022年3月2日刊作者&#xff1a;朱晓波1、陆朝阳1、潘建伟2,31 中科学技术大学合肥微尺度物质科学国家研究中心2 中国科学院院士3 中国科学技术大学量子计算是基于量子力学的全新计算模式&#xff0c;具有原理上远超经…

ASP.NET MVC教程六:两个配置文件详解

前言 在新建完一个MVC项目之后&#xff0c;你会发现整个整个项目结构中存在有两个web.config文件&#xff0c;如下图所示&#xff1a; 这两个配置文件&#xff0c;一个位于项目的根目录下面&#xff0c;一个位于Views文件夹下面&#xff0c;这两个配置文件有什么不同呢&#xf…

Nat. Commun. 速递:虚拟颅内脑电与神经动力学模型

来源&#xff1a;集智俱乐部作者&#xff1a;曹淼 编辑&#xff1a;邓一雪 导语时间-空间尺度动态演变的动力学系统建模&#xff0c;为研究大脑状态和状态转移的神经机制提供了理论基础。最近墨尔本大学曹淼等人的联合团队在Nature Communications发表论文&#xff0c;提出了虚…

ASP.NET MVC教程五:ASP.NET MVC中的路由

一、概述 在ASP.NET MVC架构中&#xff0c;控制器在3大核心构件中处于中心地位&#xff0c;通过控制器支配模型和视图&#xff0c;然而从浏览器发出的请求到控制器还需要路由的协助&#xff0c;路由将特定的请求和控制器的动作对应起来。 在ASP.NET MVC程序中&#xff0c;路由主…

一文梳理深度学习算法演进

来源&#xff1a;https://zhuanlan.zhihu.com/p/464515049作者&#xff1a;Peter潘欣编辑&#xff1a;蘑菇先生学习记涉及语音、图像、nlp、强化学习、隐私保护、艺术创作、目标检测、医疗、压缩序列、推荐排序等方向。文章较长&#xff0c;耐心读完会有收获。1. 前言如果说高德…

ASP.NET MVC教程八:_ViewStart.cshtml

一、引言 _ViewStart.cshtml是在ASP.NET MVC 3.0及更高版本以后出现的&#xff0c;用Razor模板引擎新建项目后&#xff0c;Views目录下面会出现一个这样的文件&#xff1a; 打开_ViewStart.cshtml文件&#xff0c;里面只有一行代码&#xff1a; 这行代码表示使用Views文件夹下的…

2021年全球十大工程成就,中国有几个? | 科技袁人

来源&#xff1a; 风云之声视频链接&#xff1a;西瓜视频&#xff1a;https://www.ixigua.com/7068180516549329415本视频发布于2021年2月25日&#xff0c;观看量已达7.4万次精彩呈现&#xff1a;2021年&#xff0c;中国工程院院刊《Engineering》组织了一个“全球十大工程成就…

formSelects-v4.js 基于Layui的多选解决方案

详情链接地址&#xff1a; https://hnzzmsf.github.io/example/example_v4.html#select_search_server1、闲谈杂趣v3传送门 v3文档其实思考了很久, 还是放弃了v3, 因为开发v3的时候很粗暴, 按照编程角度来看就是硬撸, 也怪自己实力有限, 所以反思了一下, 尝试着继续前行...…

将公平注入AI:机器学习模型即使在不公平数据上训练也能产生公平输出

来源&#xff1a;ScienceAI编译&#xff1a;绿萝如果使用不平衡的数据集训练机器学习模型&#xff0c;比如一个包含远多于肤色较浅的人的图像的数据集&#xff0c;则当模型部署在现实世界中时&#xff0c;该模型的预测存在严重风险。但这只是问题的一部分。麻省理工学院的研究人…

SIRIM上海,http://www.sirim-global.com

SIRIM上海http://www.sirim-global.com 转载于:https://www.cnblogs.com/daixh/p/11446157.html

使用ngModel创建组件

angular/forms里有个接口用来实现支持[(ngModel)]&#xff0c;具体可查ControlValueAccessor&#xff0c;这边还未深入理解只是为了开发组件而初步了解 interface ControlValueAccessor {writeValue(obj: any): voidregisterOnChange(fn: any): voidregisterOnTouched(fn: any)…

制定城市大脑建设标准应遵循的十条原则探讨

作者&#xff1a;刘锋本文发表于2022年3月《中国建设信息化杂志》2015以来&#xff0c;城市大脑被提出并成为前沿科技和智慧城市建设领域的新热点。到2022年&#xff0c;全国已经有包括北京、上海、杭州、深圳、郑州、呼和浩特、合肥等数百个城市宣布建设城市大脑的规划。有包括…

suitecrm配置(nginx设置)

suitecrm配置在nginx下的一些设置 server { listen 88; server_name 192.168.2.253; #charset koi8-r; #access_log /var/log/nginx/host.access.log main;location / {root /var/www/crm/SuiteCRM;index index.php index.html index.htm; }#error_page 404 …

图灵测试,时至今日还有意义吗?

来源&#xff1a;学术头条我们必须承认&#xff0c;机器运行时的很多中间状态&#xff0c;是在设计初始指令时无法预见的。机器自己也会感悟出很多知识。在这种情況下&#xff0c;我们有必要将机器视为智能的。艾伦图灵图灵测试由人工智能之父—艾伦图灵提出&#xff0c;指测试…

AI科普微视频丨深度学习如何帮助自动驾驶

来源&#xff1a;中国人工智能学会人工智能是如何产生的&#xff1f;人工智能的发展为什么充满曲折&#xff1f;为什么说图灵是人工智能之父&#xff1f;为加大AI科普力度&#xff0c;推动文化传播&#xff0c;中国人工智能学会推出了“AI科普微视频”栏目&#xff0c;以每期2~…

谈谈C#反射(Reflection)

反射是什么&#xff1f;官方给出的解释&#xff1a;反射提供了封装程序集、模块和类型的对象&#xff08;System.Type类型&#xff09;。可以使用反射动态创建类型的实例&#xff0c;将类型绑定到现有对象&#xff0c;或从现有对象获取类型并调用其方法或访问其字段和属性。 个…