当前位置: 首页 > news >正文

windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述

目录

  • 前言
  • 一、安装opencv
    • (1)下载
    • (2)双击安装
    • (3)环境变量和system文件夹设置
  • 二、打开vs创建项目
  • 三、编辑cpp,.h,cmakelist.txt文件
    • (1)h文件
    • (2)cpp文件
    • (3)makefile文件
    • (4)点击生成编译

前言

在计算机视觉和图像处理领域,OpenCV是一个非常流行的开源库,它提供了许多强大的功能和算法,可以帮助开发人员快速构建高效的应用程序。然而,对于初学者来说,OpenCV的配置和编译可能会是一个挑战。为了帮助大家更好地理解和掌握OpenCV的编译过程,本文将介绍如何在Windows上使用Visual Studio创建CMake工程并编译OpenCV应用程序,最终生成可执行文件。本文将详细介绍每个步骤,并提供一些实用的技巧和注意事项,以帮助读者更好地理解和掌握OpenCV的编译过程。无论您是初学者还是有经验的开发人员,本文都将为您提供有价值的信息和知识。

一、安装opencv

(1)下载

直接从官网下载安装包就行:
在这里插入图片描述

(2)双击安装

这个是二进制文件,直接按照到相应的目录下。
在这里插入图片描述
在这里插入图片描述

(3)环境变量和system文件夹设置

将opencv的\build\x64\vc16\bin文件夹路径写入系统环境变量(path)里面:
在这里插入图片描述
同时,需要把bin下面的所有dll文件都放到system32里面:
在这里插入图片描述
在这里插入图片描述

二、打开vs创建项目

文件》----新建》-----项目》------CMake项目:
在这里插入图片描述

三、编辑cpp,.h,cmakelist.txt文件

(1)h文件

如下:
在这里插入图片描述

// CMakeIbot.h: 标准系统包含文件的包含文件
// 或项目特定的包含文件。#pragma once#include <iostream>
#include <opencv2/opencv.hpp>// TODO: 在此处引用程序需要的其他标头。

(2)cpp文件

如下:
在这里插入图片描述
代码:

// CMakeIbot.cpp: 定义应用程序的入口点。
//#include "CMakeIbot.h"using namespace std;
using namespace cv;int main() {Mat frame;int key;// 创建窗口namedWindow("Camera", WINDOW_AUTOSIZE);// 获取视频设备VideoCapture cap(0);// 检查是否成功打开摄像头if (!cap.isOpened()) {cerr << "ERROR: Unable to open the camera" << endl;return 1;}// 循环读取视频帧并显示while (true) {cap >> frame;imshow("Camera", frame);// 等待按键事件key = waitKey(30);// 按下ESC键退出循环if (key == 27) {break;}}// 释放摄像头并关闭窗口cap.release();destroyAllWindows();return 0;
}

(3)makefile文件

如下:

# CMakeList.txt: CMakeIbot 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.20)
# 工程名称
project ("CMakeIbot")
# 设置OpenCV lib路径
set(OpenCV_DIR "D:\\opencv4\\opencv\\build\\x64\\vc16\\lib")# 引入 OpenCV 库
find_package(OpenCV REQUIRED)
#打印调试信息,输出说明正常
MESSAGE(STATUS "Project: ${PROJECT_NAME}")
MESSAGE(STATUS "OpenCV library status:")
MESSAGE(STATUS "    version: ${OpenCV_VERSION}")
MESSAGE(STATUS "    libraries: ${OpenCV_LIBS}")
MESSAGE(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")# 添加 OpenCV 库头文件搜索路径
include_directories(${OpenCV_INCLUDE_DIRS})# 将源代码添加到此项目的可执行文件。
add_executable (CMakeIbot "CMakeIbot.cpp" "CMakeIbot.h")
# 将 OpenCV 库链接到工程中
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})if (CMAKE_VERSION VERSION_GREATER 3.12)set_property(TARGET CMakeIbot PROPERTY CXX_STANDARD 20)
endif()

(4)点击生成编译

弹出摄像头运行ok
在这里插入图片描述
已经生成了exe文件:
在这里插入图片描述

相关文章:

windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述

目录 前言一、安装opencv&#xff08;1&#xff09;下载&#xff08;2&#xff09;双击安装&#xff08;3&#xff09;环境变量和system文件夹设置 二、打开vs创建项目三、编辑cpp&#xff0c;.h&#xff0c;cmakelist.txt文件&#xff08;1&#xff09;h文件&#xff08;2&…...

QML 仪表盘小示例

本次项目已发布在CSDN->GitCode,下载方便,安全,可在我主页进行下载即可,后面的项目和素材都会发布这个平台。 个人主页:https://gitcode.com/user/m0_45463480怎么下载:在项目中点击克隆,windows:zip linux:tar.gz tar # .pro TEMPLATE = appTARGET = dialcontrol​#…...

力扣206. 反转链表

题目: 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例 3&#xff1a;…...

深度学习之基于Tensorflow卷积神经网络花卉识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习是一种机器学习方法&#xff0c;它通过模拟人脑神经网络的结构和功能来实现对数据的自动分析和学习。卷积神…...

leetcode链表

这几天手的骨裂稍微好一点了&#xff0c;但是还是很疼&#xff0c;最近学校的课是真多&#xff0c;我都没时间做自己的事&#xff0c;但是好在今天下午是没有课的&#xff0c;我也终于可以做自己的事情了。 今天分享几道题目 移除链表元素 这道题我们将以两种方法开解决&…...

Kali Linux渗透测试的艺术

Kali Linux&#xff08;Kali&#xff09;是专门用于渗透测试的Linux操作系统&#xff0c;它由BackTrack 发展而来。在整合了IWHAX、WHOPPIX 和Auditor 这3 种渗透测试专用Live Linux 之后&#xff0c;BackTrack正式改名为Kali Linux。 BackTrack是相当著名的Linux发行版本。在…...

2023年最新版潮乎盲盒源码含搭建教程

后台开发语言&#xff1a;后端 Laravel 框架开发 前端开发框架&#xff1a;uniappvue 环境配置: php7.4 mysql5.6 nginx1.22 redis&#xff08;建议宝塔面板或 lnmp&#xff09; 源码获取请自行百度&#xff1a;一生相随博客 一生相随博客致力于分享全网优质资源&#x…...

[GitLab] 安装Git 指定版本

卸载旧版本 检查是否已经安装 git --version如果已经安装&#xff0c;先卸载 yum -y remove git安装新版本 在GitHub上选择需要下载的版本 Git版本 在/usr/local/目录下新建文件夹&#xff1a;git&#xff0c;并在/usr/local/git/文件夹内下载压缩包 wget https://github…...

vue中ref和$refs

1.作用 利用ref 和 $refs 可以用于 获取 dom 元素 或 组件实例&#xff0c;也可以在父组件获取子组件&#xff0c;从而调用子组件的方法。 2.特点&#xff1a; 查找范围 → 当前组件内(更精确稳定) 3.语法 1.给要获取的盒子添加ref属性 <div ref"chartRef"&…...

CRM怎样帮助您的企业进行营销管理?

​ CRM助力企业营销管理&#xff0c;为企业降本增效提升投入产出比。CRM软件是如何实现的呢&#xff1f; 扩大线索量 想要精准获客的第一步是要扩大线索量&#xff0c;多渠道营销推广是很好的方法。例如&#xff1a; 1.线下展会线上Webinar等市场活动 2.搭建微信、微博、…...

Gerrrit 管理员常用命令

1. replication插件重新加载 当修改replication配置文件&#xff08;replication.config&#xff09;&#xff0c;需要重启gerrit生效&#xff0c;或者重新加载replication。 # 重新加载replication插件 ssh -p 29418 usernamegerrit.company.com gerrit plugin reload repli…...

深入理解强化学习——多臂赌博机:增量式实现

分类目录&#xff1a;《深入理解强化学习》总目录 至今我们讨论的动作—价值方法都把动作价值作为观测到的收益的样本均值来估计。下面我们探讨如何才能以一种高效的方式计算这些均值&#xff0c;尤其是如何保持常数级的内存需求和常数级的单时刻计算量。 为了简化标记&#x…...

视频批量混剪剪辑软件类似剪映设计一个模板后, 视频,图片,文字,转场,音频,特效都可以系统随机

随着自媒体时代的到来&#xff0c;越来越多的人加入到了视频创作行列。然而&#xff0c;视频剪辑是一项繁琐的任务&#xff0c;特别是当你需要批量处理多个视频时。为了提高效率&#xff0c;一款名为“视频闪闪”的批量剪辑软件应运而生。 www.shipinshanshan.com “视频闪闪”…...

优维低代码实践:打包发布

导语 优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。…...

js深度学习(三)

循环 var i0 for(;i<10;){ console.log(i) i } while(i<10){ console.log(i) i } var i100; for(;i--;){ console.log(i) }2、引用值 typeof&#xff1a;number string boolean Object(object/array/null出现是为了指定为空对象/)undefined function typeof a >unde…...

JVM类的声明周期

文章目录 版权声明生命周期概述加载阶段查看内存中的对象 连接阶段连接阶段之验证连接阶段之准备连接阶段之解析 初始化阶段练习题目一练习题目二练习题目三练习题目四 使用阶段卸载阶段总结 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明…...

html将复选框变为圆形样例

html将复选框变为圆形样例 说明目录使用对勾图标实现圆形复选框原复选框html代码及默认样式取消复选框未勾选前的样式新增复选框未勾选前的样式新增复选框勾选后的样式获取复选框选中后的value值 使用CSS样式写对勾图标实现圆形复选框 说明 这里记录下用原生html实现将原复选框…...

笔记软件 Keep It mac v2.3.3中文版新增功能

Keep It mac是一款专为 Mac、iPad 和 iPhone 设计的笔记和信息管理应用程序。它允许用户在一个地方组织和管理他们的笔记、网络链接、PDF、图像和其他类型的内容。Keep It 还具有标记、搜索、突出显示、编辑和跨设备同步功能。 Keep It for mac更新日志 修复了更改注释或富文本…...

uni-app 开发的H5 定位功能部署注意事项

一、H5部署的时候&#xff0c;如果设计到定位功能&#xff0c;需要注意以下几点 1、打包部署的时候需要在Web配置-定位和地图里面勾选一个地图&#xff0c;并配置key 2、打包部署需要域名是https协议的&#xff0c;大多数现代浏览器要求在HTTPS协议下才能够访问地理位置信息&a…...

CY5-COOH脂溶性羧基荧光染料1032678-07-1

Cyanine5-COOH是一种荧光染料&#xff0c;它CAS号1032678-07-1&#xff0c;分子式为C32H39ClN2O2&#xff0c;分子量为519.12。Cyanine5-COOH具有良好的光稳定性和荧光亮度&#xff0c;可以用于生物学研究、诊断、药物筛选等领域。 Cy5-COOH (来自星戈瑞的花菁染料) 含有羧基官…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...