CMake构建OpenCV项目

2023-05-16

文章目录

  • 前言
  • 一、基本概念
  • 二、操作步骤
    • 1.创建OpenCV程序
    • 2.创建CMake文件
    • 3.编译项目
    • 4.运行项目
  • 总结


前言

CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。CMake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake和SCons等其他类似系统的区别之处。 CMake配置文件(CMakeLists.txt)可设置源代码或目标程序库的路径、产生适配器(wrapper)、还可以用任意的顺序建构可执行文件。CMake支持in-place建构(二进档和源代码在同一个目录树中)和out-of-place建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake也支持静态与动态程序库的建构。


一、基本概念

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。该程序库也可以使用英特尔公司的IPP进行加速处理。

二、操作步骤

1.创建OpenCV程序

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
    if ( argc != 2 )
    {
        printf("usage: DisplayImage.out <Image_Path>\n");
        return -1;
    }
    Mat image;
    image = imread( argv[1], 1 );
    if ( !image.data )
    {
        printf("No image data \n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

在这里插入图片描述

2.创建CMake文件

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

在这里插入图片描述

3.编译项目

cd <DisplayImage_directory>
cmake .
make

在这里插入图片描述

4.运行项目

./DisplayImage OpenCV_Logo_with_text.png

在这里插入图片描述


总结

本文介绍CMake构建OpenCV项目的流程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake构建OpenCV项目 的相关文章

  • 有人曾经在 MacOS 10.6 上使用过 OpenCV 和 Python 2.7 吗?

    在过去的 6 个月里 我一直断断续续地尝试让 OpenCV 在 MacOS 上与 Python 配合使用 每次有新版本发布时 我都会再次尝试并失败 我已经尝试过 64 位和 32 位 并且 xcode gcc 和 gcc 都是通过 macp
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 我可以安装共享导入库吗?

    我有一个外部项目和一个导入的共享库 include 目录和 implib 都可以正常工作 但尝试安装共享库 dll 失败并出现以下错误 install TARGETS given target my shared lib which doe
  • 如何使用cmake自动构建第三方库

    我在寻找什么 下载库 提取它 应用自定义补丁 运行配置 运行构建命令 我正在尝试构建的库是 Openssl Boost Thrift C ares Curl Pcre Nginx ICU JsonCPP 我想我可以使用外部模块做这些事情 h
  • Haar训练时正样本和负样本使用多少张图片?

    我已经阅读了大量有关 Haar 训练的内容 但我不清楚应该为正样本集和负样本集使用多少图像 我看到建议使用很多图像 有些人推荐数千张 我也不清楚正负样本图像的数量是否应该相同 这是关于 Haar 训练的最佳教程 你试过这个吗 http no
  • 使用 cv2 在 python 中创建多通道零垫

    我想用 cv2 opencv 包装器在 python 中创建一个多通道 mat 对象 我在网上找到了一些例子 其中 c Mat zeros 被 numpy zeros 替换 这看起来不错 但似乎没有多通道类型适合 看代码 import cv
  • CMake source_group() 无法在分层项目设置中正常工作

    在进行更改以使 CMake 项目具有分层文件夹管理后 source group 似乎不再正常工作 CMake 只是将所有内容转储到默认过滤器中 我尝试了各种正则表达式来从父级获取每个源文件的相对文件路径 甚至对父级 CMakeLists t
  • 基本的 Python OpenCV 裁剪和调整大小

    有人可以帮我一些裁剪算法吗 它的 openCV 我想弄清楚这一点 我知道方法是crop image y y1 x x1 如果我有一个带有 new dimensionXxnew dimensionY 像素的图像 并且我想将其裁剪为相同的宽度
  • 使用 OpenCV 和 Python 叠加两个图像而不丢失颜色强度

    如何叠加两个图像而不损失两个图像的颜色强度 我有图像1和图像2 2 我尝试使用 0 5 alpha 和 beta 但它给我的合并图像的颜色强度只有一半 dst cv2 addWeighted img1 0 5 img2 0 5 0 但是当我
  • 使用 CLion IDE 运行 Opengl 程序 [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但提供的解决方案确实对我不起作用 我想通过 CLion IDE 运行我的 OpenGL 程序 我可以通过 Ubuntu 中的终端运行相同的程序 gcc progname c lglut
  • 如何确定透视变换后的点在新图像平面中的位置?

    我使用 OpenCV Python Numpy 图像中有三个点 我知道这些点的确切位置 P1 P2 N1 我要将图像转换为另一个视图 例如 我将透视图转换为侧视图 如果这样做 我将无法获得图像平面中这三个点的确切位置 我应该以一种可以获得这
  • CMake GUI:指定 Windows 的库路径

    我正在编译一个基于 CMake 的项目 具体来说是 SOCI 它依赖于 SQLite 这是Windows 没有可供项目研究的标准路径 因此它找不到SQLite 我在配置时得到这个 SQLite3 not found some librari
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • 如何平滑循环列向量

    这是一个 OpenCV2 问题 我有一个矩阵代表closed空间曲线 cv Mat
  • 即使不在 Windows 上,生成器表达式也会将 WIN32 变量计算为 true

    我在 Ubuntu 上工作 这是我的 CMake 代码的一部分 有问题的部分在最后一句中 include ExternalProject ExternalProject Add fftw3 external URL http www fft
  • OpenCV:将垫子除以标量的最简单方法是什么

    我认为标题中已经包含了很多内容 显然我可以迭代和划分 但我认为有一种内置的方法 我看见cvConvertScale但这不适用于类型cv Mat 我知道标量乘法的缩放运算 cv Mat M float alpha cv Mat Result
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 使用 QWT 构建时出错

    我收到一个错误 undefined reference to QwtPlot QwtPlot QWidget 当我尝试构建我的项目时 即使设置中一切看起来都很好 在我的 CmakeLists txt 中我有 include director
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 opencv 源

随机推荐

  • 记一次Nginx服务器CPU100%故障

    描述 周五请假外出 xff0c 突然收到监控报警提示Nginx服务器的CPU使用率100 xff0c 另外用户也反应服务不可用 xff0c 同事登录服务器后发现Nginx的进程的CPU使用率100 xff0c 且后端应用有大量的服务调用网络
  • 嵌入式软件开发的难点

    软件开发本身就存在自由度大 关联性高的问题 嵌入式软件除了继承软件开发的难点之外 xff0c 在如下方面有自身的 独特的难点 xff1a 1 xff0c 内存有限 xff0c 螺蛳壳里做道场 xff1b 2 xff0c 处理能力有限 xff
  • FreeRTOS怎么定义systick中断处理?

    1 xff0c 在FreeRTOSConfig h里 xff0c 定义如下 xff1a define xPortSysTickHandler SysTick Handler 2 xff0c 在启动代码里 xff08 s或者 asm xff0
  • 开关中断与cpsid/cpsie指令

    在汇编代码中 xff0c CPSID CPSIE 用于快速的开关中断 xfeff xfeff CPSID I PRIMASK 61 1 xff0c 关中断 CPSIE I PRIMASK 61 0 xff0c 开中断 CPSID CPSIE
  • 通过安装VNC服务器x11vnc(或vnc4server)和配置x11vnc.service实现远程通过VNC-Viewer访问VNC服务器。

    1 Xshell的下载 xff1a 通过Xshell官网 xff08 链接 xff1a XShell 下载 softonic com xff09 下载Xshell 图 2 Xshell的下载 下载完成后安装 xff0c 安装成功后打开Xsh
  • 移动互联网,浮华还是盛宴—— 2011年中国移动开发者大会

    参会第一天 2011年11月3日早晨 xff0c 把女儿送到幼儿园之后 xff0c 驱车直奔移动开发者大会现场 虽然北京的堵车一如既往 xff0c 不过这次大会安排在了国家会议中心 xff0c 这是北京为数不多的在早晚高峰不堵车的地方 xf
  • 汇编LDMIA ,STMDB指令等

    LDMIA 中的 I 是bai increase 的缩写 xff0c A 是 after 的缩小 xff0c LD加载 load 的意思 R1后面的感叹du号 xff01 表示会自动调节 R1里面zhi存的指dao针 所以整句话意思是任务栈
  • 到底什么是模型预测控制MPC(一)

    1 为什么使用MPC控制 在浏览文章的时候 xff0c 很多文章都是基于MPC来做的 那么究竟什么是模型预测呢 xff1f 模型预测也可以说是一种我们熟悉的反馈控制算法 xff0c 其目的就是预测出未来的输出 以一个生活中的例子引入 xff
  • Linux访问报Input/output error处理步骤一例

    背景 xff1a redhat7 4版本操作系统 xff0c 收到磁盘告警 更换磁盘后检查系统 xff0c 发现 opt无法查看内容 1 先尝试保存metadata xff0c 不行则继续下一步 如果磁盘很大 xff0c 那metadata
  • 四旋翼电池、电机、螺旋桨选型与搭配

    电池 电机 螺旋桨搭配 1 电机 1 电机KV值 xff1a 大KV配小桨 xff0c 小KV配大桨 KV值是每1V的电压下电机每分钟空转的转速 xff0c 例如KV800 在1V的电压下空转转速是800转每分钟 10V的电压下是8000转
  • jetsonNX刷机步骤

    图为T503盒子 1 取消ssd为系统盘 nbsp sudo mount nbsp dev mmcblk0p1 mnt nbsp cd mnt etc nbsp sudo rm setssdroot conf nbsp reboot 2 格
  • MT7603/MT7610/MT7612/MT7632/MT7662/RT3070 WiFi模块选型参考

    MT7603 MT7610 MT7612 MT7632 MT7662 RT3070 rt5572系列wifi模块选型参考 RT3070是2 4G单通道 xff0c 最大传输速率可以150Mbps xff0c 目前基本上是一些dongle类产
  • 联发科RT2880/RT3052/RT3883/RT5350/RT3352无线路由器wifi芯片介绍

    RT3052 SOC结合了mediaTek Ralink 的802 11n草案 xff0c 兼容2T2R MAC BBP RF 高性能的384MHz MIPS24KEc CPU内核 5端口集成10 100以太网交换机 PHY USB OTG
  • MT7628处理器介绍,MT7628芯片原理图资料

    MT7628处理器 xff1a MT7628芯片上路由器包括802 11n MAC和基带 2 4GHz无线电和FEM 575 580 MHz MIPS 24KCPU核 5端口10 100快速以太网交换机 MT7628包括所有需要的东西 从单
  • MT7628 wifi模块,MTK路由器芯片介绍

    MT7628处理器 xff1a MT7628nn mt7628an 系列产品是新一代2T2R 802 11n Wi Fi AP 路由器 系统单芯片 MT7628可提升射频效能表现 减低功耗 xff0c 并将整体物料清单 BOM 成本优化 x
  • MT7621A路由器芯片参数/处理器资料(原理图/CPB)介绍

    MT7621A支持高级别AP 路由器的要求 xff0c 以及大量的接口以及巨大的最大RAM容量 feature MT7621A CPU MIPS1004Kc 880 MHz I Cache D Cache 32 KB 32 KB L2 Ca
  • 《大数据时代》读书总结

    这本书从以下几个方面阐述了我们所处的时代是如何展现 大数据 的 xff1a 1 首先是大数据时代的思维变革 思维为什么需要变革 xff1f 怎样变革 xff1f 思维需要变革的第一个原因是 xff0c 这个时代获取和处理数据的方式更加多元
  • 联发科RT3573无线wifi路由器模块芯片介绍

    RT3573是联发科推出的一款高效能又具成本效益的802 11n WiFi 传输器 dongle 解决方案平台 RT3573是一款高度整合式WiFi单芯片 xff0c 支持450 Mbps PHY速率 它完全符合IEEE 802 11n及I
  • K8S svc暴露的服务内部调用方法

    现象 xff1a 在Kubernetes集群内业务是通过ClusterIP或者服务名访问 k8s 的ingress nginx controller存在缺陷 xff0c 只有Ingress的Pod所在节点上 xff0c Pod才能访问通过I
  • CMake构建OpenCV项目

    文章目录 前言一 基本概念二 操作步骤1 创建OpenCV程序2 创建CMake文件3 编译项目4 运行项目 总结 前言 CMake是个一个开源的跨平台自动化建构系统 xff0c 用来管理软件建置的程序 xff0c 并不依赖于某特定编译器