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

Visual Studio 2022 cmake配置opencv开发环境

1. 环境与说明

这里我用的是 widnows 10 64位Visual Studio 用的 Visual Studio Community 2022 (社区版)

对于Android开发工程师来说,为什么要使用Visual Studio 呢 ?
因为在Visual Studio中开发调试OpenCV方便,可以开发调试好后,再移植到Android中。

2. 下载OpenCV版本

官方地址在这里 : 官方下载地址
不过官方下载地址可能会比较慢,可以下载我上传的资源 : OpenCV-4.8.0打包下载

在这里插入图片描述

这里我们下载widnows版本,对应着就是opencv-4.8.0-windows.exe

2.1 安装OpenCV

双击opencv-4.8.0-windows.exe ,将其安装到指定目录下,比如D:\Developer\opencv4.8.0

安装 opencv-4.8.0-windows.exe 其实本质上就是将其解压到一个目录下

3. 下载Visual Studio

这里下载 Visual Studio Community 2022 社区版就好了,免费的,下载地址 : Visual Studio下载

在这里插入图片描述

3.1 配置所需的环境

Visual Studio 需要安装配置所需的环境 ,具体在 工具 > 获取工具和功能 中可以看到

在这里插入图片描述

我们需要勾选使用 C++的桌面开发使用C++的Linux开发

在这里插入图片描述
在这里插入图片描述
单个组件中 SDK 、库和框架 下勾选 Windows 10 SDKWindows 通用 C 运行时

在这里插入图片描述
编译器、生成工具和运行时 下勾选 用于 Windows 的 C++ CMake 工具

在这里插入图片描述

4 新建CMake项目

配置好环境后,我们打开Visual Studio,新建CMake项目

在这里插入图片描述
这里我们把项目名命名为OpenCVTest

在这里插入图片描述
点击创建,在选择启动项这里,选择OpenCVTest.exe,然后点击运行
在这里插入图片描述
可以看到这样一个命令行窗口,就表示运行成功了

在这里插入图片描述

5. 验证OpenCV配置

5.1 复制 opencv_world480d.dll

D:\Developer\opencv4.8.0\opencv\build\x64\vc16\bin\opencv_world480d.dll复制到E:\WorkSpace\Demo\OpenCV\OpenCVTest\out\build\x64-debug\OpenCVTest目录下,即和OpenCVTest.exe同一目录下

opencv_world480d.dll : Debug版本
opencv_world480.dll : Release版本

在这里插入图片描述

5.2 配置CMakeList.txt

在项目内(和cpp同级)的CMakeLists.txt中,添加OpenCV头文件的目录,替换\/,具体代码如下

# CMakeList.txt: OpenCVTest 的 CMake 项目,在此处包括源代码并定义项目特定的逻辑。# 指定要引用的dll的头文件所在路径
include_directories("D:/Developer/opencv4.8.0/opencv/build/include")
# 指定该dll的lib所在路径
link_directories("D:/Developer/opencv4.8.0/opencv/build/x64/vc16/lib")# 将源代码添加到此项目的可执行文件。
add_executable (OpenCVTest "OpenCVTest.cpp" "OpenCVTest.h")# 指定链接库的名字,即dll
# 需要将opencv_world480d.dll复制到out\build\x64-Debug\OpenCVTest目录下,即和OpenCVTest.exe同一目录下
target_link_libraries(OpenCVTest opencv_world480d.lib)if (CMAKE_VERSION VERSION_GREATER 3.12)set_property(TARGET OpenCVTest PROPERTY CXX_STANDARD 20)
endif()

5.3 编写cpp代码

将一张图片复制到D盘根目录,命名为ImageTest.jpg
然后在OpenCVTest.cpp中编写如下代码,将这张图片分别以原图和灰白图片的形式展示出来。

#include "OpenCVTest.h"
#include "opencv2/opencv.hpp"using namespace std;
using namespace cv;int main()
{cout << "Hello CMake." << endl;Mat img = imread("D:/ImageTest.jpg");imshow("img", img); //显示原图cvtColor(img, img, COLOR_BGR2GRAY);imshow("img2", img); //显示灰色图片waitKey();return 0;
}

5.4 运行效果

点击运行,显示效果如下,两个弹框分别显示出了原图和灰白图片。
在这里插入图片描述
到此,Visual Studio的项目中的OpenCV就配置成功了。

相关文章:

Visual Studio 2022 cmake配置opencv开发环境

1. 环境与说明 这里我用的是 widnows 10 64位&#xff0c;Visual Studio 用的 Visual Studio Community 2022 (社区版) 对于Android开发工程师来说&#xff0c;为什么要使用Visual Studio 呢 ? 因为在Visual Studio中开发调试OpenCV方便&#xff0c;可以开发调试好后&#xf…...

C++ GDAL找出多时相遥感影像缺失的日期并自动生成新的全零图像作为替补

本文介绍基于C 语言的GDAL库&#xff0c;基于一个存储大量遥感影像的文件夹&#xff0c;依据每一景遥感影像的文件名中表示日期的那个字段&#xff0c;找出这些遥感影像中缺失的成像日期&#xff0c;并新生成多个像元值全部为0的栅格文件&#xff0c;作为这些缺失日期当日的遥感…...

【AI底层逻辑】——篇章5(下):机器学习算法之聚类降维时间序列

续上&#xff1a; 目录 4、聚类 5、降维 6、时间序列 三、无完美算法 往期精彩&#xff1a; 4、聚类 聚类即把相似的东西归在一起&#xff0c;与分类不同的是&#xff0c;聚类要处理的是没有标签的数据集&#xff0c;它根据样本数据的分布特性自动进行归类。 人在认知是…...

P1980 [NOIP2013 普及组] 计数问题

[NOIP2013 普及组] 计数问题 题目描述 试计算在区间 1 1 1 到 n n n 的所有整数中&#xff0c;数字 x x x&#xff08; 0 ≤ x ≤ 9 0\le x\le9 0≤x≤9&#xff09;共出现了多少次&#xff1f;例如&#xff0c;在 1 1 1 到 11 11 11 中&#xff0c;即在 1 , 2 , 3 , 4…...

需求管理全过程流程图及各阶段核心关注点详解

分析报告指出&#xff0c;多达76%的项目失败是因为差劲的需求管理&#xff0c;这个是项目失败的最主要原因&#xff0c;比落后的技术、进度失控或者混乱的变更管理还要关键。很多项目往往在开始的时候已经决定了失败&#xff0c;谜底就在谜面上&#xff0c;开始就注定的失败&am…...

Android开源 自定义emoji键盘,EmojiPack v2.1版本

目录 一&#xff0c;简介 二、安装 添加jitpack 仓库 添加依赖: 混淆规则: 三、使用 1、一次性配置emoji显示处理 二、emoji的自定义键盘的使用 一&#xff0c;简介 EmojiPack当前已提供emoji的显示和emoji的选择自定义键盘&#xff0c;在emoji显示这一方面&#xff0…...

SOLIDWORKS软件的优势分析 硕迪科技

在现代的机械设计领域&#xff0c;SOLIDWORKS是一款备受青睐三维设计软件&#xff0c;它具备强大的建模和设计功能&#xff0c;在全球范围内广泛应用于机械设计和工程领域&#xff0c;为用户提供了全面的工程解决方案。本文就SOLIDWORKS的优势进行详细分析。 1、易于学习和使用…...

Android性能优化之游戏的Theme背景图

近期&#xff0c;对游戏的内存优化&#xff0c;通过内存快照发现&#xff0c;某个Activity的theme背景图 占用3M 多。考虑着手对齐进行优化。 问题 查看游戏中的内存快照&#xff0c;发现有一个图片bitmap 占用3M 多&#xff0c;设置在Activity的背景中&#xff1a; 查看Phon…...

网络安全(黑客)系统自学,成为一名白帽黑客

前言 黑客技能是一项非常复杂和专业的技能&#xff0c;需要广泛的计算机知识和网络安全知识。你可以参考下面一些学习步骤&#xff0c;系统自学网络安全。 在学习之前&#xff0c;要给自己定一个目标或者思考一下要达到一个什么样的水平&#xff0c;是学完找工作&#xff08;…...

lua学习-2 常见运算符

文章目录 赋值运算符普通赋值多重赋值交换赋值 算数运算符常见符号标识 关系运算符常见符号标识TIP 逻辑运算符常见符号标识模拟三目运算 赋值运算符 普通赋值 a 1b "123"c truec "true"多重赋值 a,b 1,2 a,b,c 2,"ss" -- c的值为nil交换赋…...

【图像处理】使用 OpenCV 将您的照片变成卡通

图像到卡通 一、说明 在当今世界&#xff0c;我们被图像和视频所包围。从社交媒体到广告&#xff0c;图像已成为一种强大的交流媒介。但是你有没有想过&#xff0c;如果你能把你的照片变成卡通会发生什么&#xff1f;想象一下&#xff0c;为您最喜欢的照片创建动画版本&#xf…...

暖手宝UL认证 亚马逊UL测试报告 UL499测试项目

UL499测试内容&#xff1a;1、 漏电流测试 2、 输入测试 3、 潮态下漏电流测试4、正常温升测试 5、 耐高压测试 6、 稳定性测试7、异常测试&#xff08;DRY&#xff09;8、 异常测试  9、 静压及强度测试10、 烧熔断器测试、 电源线拉力测试11、 电源线推力测试12、 塑件变…...

ES6模块化与异步编程高级用法

1. ES6模块化 1.1 回顾&#xff1a;node.js 中如何实现模块化 node.js 遵循了 CommonJS 的模块化规范。其中&#xff1a; 导入其它模块使用 require() 方法模块对外共享成员使用 module.exports 对象 模块化的好处&#xff1a; 大家都遵守同样的模块化规范写代码&#xff0…...

spring-cloud-starter-gateway 4.0.6负载均衡失败

spring:application:name: gatewaycloud:gateway:routes:- id: memberuri: lb://memberpredicates:- Path/member/**需要引入下面负载均衡依赖否则503找不到服务 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-s…...

Tomcat注册为Windows服务

要将Tomcat注册为Windows服务&#xff0c;可以使用Tomcat提供的实用工具service.bat。以下是注册和配置Tomcat作为Windows服务的步骤&#xff1a; 打开命令提示符&#xff08;Command Prompt&#xff09;或 PowerShell&#xff0c;然后进入Tomcat安装目录的"bin"文件…...

【Maven】Maven 中 pom.xml 文件

文章目录 前言什么是 pom&#xff1f;pom配置一览 1. dependencies2.scope3.properties4.plugin参考 前言 Maven 是一个项目管理工具&#xff0c;可以对 Java 项目进行构建和管理依赖。 本文&#xff0c;我们认识下 pom.xml 文件。POM(Project Object Model&#xff0c; 项目…...

2、Linux驱动开发:模块_引用符号

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…...

Python web实战 | Docker+Nginx部署python Django Web项目详细步骤【干货】

概要 在这篇文章中&#xff0c;我将介绍如何使用 Docker 和 Nginx 部署 Django Web 项目。一步步讲解如何构建 Docker 镜像、如何编写 Docker Compose 文件和如何配置 Nginx。 1. Docker 构建 Django Web 项目 1.1 配置 Django 项目 在开始之前&#xff0c;我们需要有一个 D…...

【uniapp】实现买定离手小游戏

前言 最近玩了一个小游戏&#xff0c;感觉挺有意思&#xff0c;打算放进我的小程序【自动化小助手】里面&#xff0c;“三张押一张&#xff0c;专押花姑娘&#xff01;”&#xff0c;从三张卡牌&#xff0c;挑选一张&#xff0c;中奖后将奖励进行发放&#xff0c;并且创建下一…...

【vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容】

文章目录 vim 快捷命令vim 操作符vim 文本对象vim 动作 上篇文章: vim 学习系列文章 2 - vim 常用插件配置 vim 快捷命令 Vim 有一个模块化的结构&#xff0c;允许你使用各种命令的组合操作。大多数命令有两个、三个或四个部分。三部分结构的一个版本是这样的&#xff1a;操作…...

ESP32-CAM远程控制实战:SunFounder AI Camera库深度解析

1. SunFounder AI Camera 库深度解析&#xff1a;面向嵌入式工程师的 ESP32-CAM 远程控制实践指南SunFounder AI Camera 并非传统意义上的纯图像处理模块&#xff0c;而是一套完整的“端-云-APP”协同控制系统。其核心价值在于将 ESP32-CAM 这一低成本、高集成度的 AI 视觉平台…...

ILI9341 TFT驱动库:裸机SPI显示驱动设计与优化

1. SPI_TFT_ILI9341 库概述SPI_TFT_ILI9341 是一个面向嵌入式平台的轻量级图形驱动库&#xff0c;专为基于 ILI9341 显示控制器的 2.4 英寸、240320 分辨率 SPI 接口 TFT-LCD 模块设计。该库不依赖操作系统&#xff0c;可直接运行于裸机环境&#xff08;Bare Metal&#xff09;…...

零成本构建3D资源库:Firefox专属Sketchfab模型下载方案

零成本构建3D资源库&#xff1a;Firefox专属Sketchfab模型下载方案 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 在数字内容创作领域&#xff0c;高质量3D模型资…...

告别手动打字:5分钟学会用AsrTools免费语音转文字

告别手动打字&#xff1a;5分钟学会用AsrTools免费语音转文字 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text…...

别再被机械按键坑了!FPGA消抖模块Verilog代码保姆级解析(附仿真波形)

FPGA按键消抖实战&#xff1a;从原理到Verilog实现的深度解析 刚接触FPGA开发的朋友们&#xff0c;一定遇到过这样的困扰——明明按下了按键&#xff0c;系统却像没反应一样&#xff1b;或者只按了一次&#xff0c;设备却识别出多次触发。这背后隐藏着一个看似简单却至关重要的…...

SolidWorks参数化建模实战:从规则定义到智能装配

1. 参数化设计的核心思想与实战价值 我第一次接触SolidWorks参数化建模是在设计一个多规格管道连接件时。当时客户要求在24小时内提供5种不同口径的变型设计&#xff0c;传统建模方法让我不得不复制粘贴并逐个修改尺寸&#xff0c;结果在第三次修改时漏掉了一个关键孔位&#x…...

Linux 内核中的内存管理:从物理内存到虚拟内存

Linux 内核中的内存管理&#xff1a;从物理内存到虚拟内存 引言 作为一名深耕操作系统和嵌入式开发的工程师&#xff0c;我深知资源管理的重要性。在系统开发中&#xff0c;合理的资源管理可以提高系统的性能和可靠性。在 Linux 内核中&#xff0c;内存管理是一个核心组件&…...

SEO网站推广的发展历程是怎样的

<h2>SEO网站推广的发展历程&#xff1a;从初始阶段到现代优化</h2> <p>随着互联网的迅速发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;作为网站推广的重要手段&#xff0c;经历了漫长而复杂的发展历程。SEO的进化不仅改变了网站如何被搜索引擎索…...

怎样快速掌握mGBA测试套件:5个专业技巧确保模拟器稳定性

怎样快速掌握mGBA测试套件&#xff1a;5个专业技巧确保模拟器稳定性 【免费下载链接】mgba mGBA Game Boy Advance Emulator 项目地址: https://gitcode.com/gh_mirrors/mg/mgba mGBA作为一款开源的高精度Game Boy Advance模拟器&#xff0c;其测试套件是确保模拟器稳定…...

ESP32-IDF开发实战:内置JTAG与OpenOCD高效调试指南

1. 为什么选择ESP32内置JTAG调试&#xff1f; 第一次接触ESP32开发时&#xff0c;你可能会有疑问&#xff1a;市面上这么多调试工具&#xff0c;为什么非要折腾内置JTAG&#xff1f;我刚开始用串口打印调试信息&#xff0c;后来发现这种方法在排查复杂逻辑时效率太低。直到尝试…...