记录:VS2019+OpenCV4.7.0编译

news2024/11/30 10:41:14

一、准备

OpenCV官网提供了动态库的安装包,但是只有64位,而且没看到编译参数,如果需要32位或者静态链接还是得自己编译。

CMake:https://cmake.org/download/

Visual Studio:https://visualstudio.microsoft.com/zh-hans/downloads/

Visual Studio老版本:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/ 

OpenCV:https://github.com/opencv/opencv

OpenCV扩展: https://github.com/opencv/opencv_contrib

OpenCV和OpenCV扩展要下一样的版本,直接在Release列表里找同一个版本即可。 

未使用CUDA,略。

二、构建

先用CMake-gui工具生成VS的工程文件。

选择OpenCV源码路径,设置输出路径,然后点Configure:

第一次Configure时需要设置编译器:

然后是漫长的等待,他会自动下载一些第三方的依赖,我下了半天。也可以自己下载,如ffmpeg可以在github找opencv_3rdparty仓库,选择对应分支下载放到输出目录的3rdparty/ffmpeg中。

Configure结束后列表中会显示编译选项,我们修改后需要重新Configure一下。

常用的一些选项:

OPENCV_EXTRA_MODULES_PATH:指定到contrib扩展库路径下的modules目录

OPENCV_ENABLE_NONFREE:开启非免费功能,工作项目勿用

BUILD_opencv_world:将各个模块生成到一个world库文件中

BUILD_SHARED_LIBS:勾上为动态库,取消为静态库

BUILD_WITH_STATIC_CRT:勾上为/MT,取消为/MD

BUILD_WITH_DEBUG_INFO:生成调试符号文件

Qt安装版是/MD的动态链接,所以我选择一样的设置。之前遇到过别人VS2022静态编译的OpenCV我VS2019没法用,缺了VS2022的运行时库。

还有一些多余的设置,用不上可以搜索然后取消勾选,比如其它语言的绑定、测试等:

设置好后重新Configure,没报错就点Generate生成VS工程,然后点Open打开工程。这个工程文件在上面我们设置的输出目录下。 

在VS中我们选择好Debug或者Relase,然后在CmakeTargets下的All_BUILD右键点击生成,生成完了再INSTALL右键点生成,就会在输出目录生成一个install文件夹。

install文件夹里有库文件和头文件:

我们先写个Demo测试一下。

三、使用

在VS中使用动态库要设置包含目录(VC++目录设置或者C++/常规设置)、库目录(VC++目录设置或者连接器/常规设置)和库文件。 

如果懒得把dll拷到exe或者工作目录下,可以设置调试环境变量:

PATH=XXXX;%PATH%

测试代码:

// #include "opencv2/opencv.hpp"
cv::Mat canvas = cv::Mat::ones(cv::Size(200, 200), CV_8UC3);
cv::rectangle(canvas, cv::Rect(50,50,100,100), cv::Scalar(0, 0, 255), 2);
cv::imshow("canvas", canvas);
cv::waitKey(0);

运行效果:

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

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

相关文章

计算机组成原理——中央处理器

文章目录 **一 CPU的功能和基本结构****1 CPU的功能****2 [基本结构](http://t.csdn.cn/bpCt3)****2.1 运算器****2.2 控制器** **二 指令执行过程****1 指令周期****2 指令周期的数据流****2.1 取指周期****2.2 间址周期****2.3 执行周期****2.4 中断周期** **3 指令的执行方案…

chatgpt赋能python:如何下载Python中的jieba包

如何下载Python中的jieba包 随着Python的普及,很多程序员选择使用Python作为自己的主力编程语言。对于自然语言处理方面的任务,jieba是Python中一个非常优秀的分词工具。那么,如何下载和使用Python中的jieba包呢?本篇文章将为您详…

【MySQL数据库 | 第十四篇】多表查询案例

目录 前言: 引入背景: 练习: 前言: 在第十三篇我们已经详细的介绍了多表查询的类别以及每一个类别的语法:【MySQL数据库 | 第十三篇】多表查询,今天我们将通过案例来巩固我们对多表查询语法的熟悉度。 引入…

JavaSE笔记(二)重制版

面向过程篇 前面我们已经认识了Java语言的相关特性,并且已经成功配置好了开发环境,从这节课开始,我们就可以正式进入到Java语言的学习当中了。Java语言是一门面向对象的语言,但是在面向对象之前,我们还得先学会如何面…

【IMX6ULL驱动开发学习】05.IMX6ULL驱动开发_编写第一个hello驱动【熬夜肝】

经过以下四个步骤,终于可以开始驱动开发了 01.安装交叉编译环境【附下载地址】 02.IMX6ULL烧写Linux系统 03.设置IMX6ULL开发板与虚拟机在同一网段 04.IMX6ULL开发板与虚拟机互传文件 目录 一、获取内核、编译内核 二、创建vscode工作区,添加内核目录…

《计算机组成原理》期末考试手写笔记——模块五: 并行主存系统(交叉存储器+顺序存储器“带宽”的计算方法)

目录 (一)知识点总结 (二)经典考试例题 1.设主存储器容量为256字,字长为32位,模块数m4,分别用顺序方式和交叉方式进行组织。主存储器的存储周期T200ns,数据总线宽度为32位&#x…

EMQ X(2):EMQ X服务端环境搭建与配置

1 安装 EMQ X 目前支持的操作系统: Centos6Centos7OpenSUSE tumbleweedDebian 8Debian 9Debian 10Ubuntu 14.04Ubuntu 16.04Ubuntu 18.04macOS 10.13macOS 10.14macOS 10.15Windows Server 2019 产品部署建议 Linux 服务器,不推荐 Windows 服务器。 安装的方式有…

【Linux】HTTP协议

目录 🚀前言🚃HTTP协议 🚄1、URL网址🚅2、URL的编码和解码🚇3、HTTP协议格式🚈4、HTTP请求🚉4.1、 HTTP GET和POST方法🚋4.2、HTTP状态码🚊4.3、HTTP常见Header &#x1…

redis架构设计: redis-server的启动(硬核分析)

怎么在windows上用clion搭建redis的源码阅读环境 请看我的上一篇文章 redis启动之后都干了什么呢? 我们知道,redis的服务端对应的源码位置是server.c main函数是程序启动的入口 ,下面我来一行一行的分析server.c的源码 1、定义时间函数变量 struct …

chatgpt赋能python:Python多种输出格式详解

Python多种输出格式详解 对于Python程序员来说,输出是非常重要的。无论是在开发阶段还是在生产环境中,输出都是我们调试程序和确认程序运行是否正常的重要手段。Python标准库提供了丰富的输出格式,本文介绍了几种常见的输出格式及其使用方法…

因为写不出拖拽移动效果,我恶补了一下Dom中的各种距离

目录 背景 JS Dom各种距离释义 第一个发现 window.devicePixelRatio 的存在 document.body、document.documentElement和window.screen的宽高区别 scrollWidth, scrollLeft, clientWidth关系 元素自身和父级元素的scrollWidth和scrollLeft关系? offsetWidth和clientWid…

【FDA】图像通过傅里叶变换改变光谱风格,实现域自适应

FDA: Fourier Domain Adaptation for Semantic Segmentation, CVPR2020 翻译:CVF2020邻域自适应/语义分割:FDA: Fourier Domain Adaptation for Semantic SegmentationFDA:用于语义分割的傅立叶域自适应算法_傅里叶域适应_HheeFish的博客-CS…

【TCP/IP】多进程服务器的实现(进阶) - 进程和僵尸进程

目录 僵尸(Zombie)进程 僵尸进程的产生机制 僵尸进程的危害 僵尸进程的销毁 wait函数 waitpid函数 进程管理在网络编程中十分重要,如果未处理好,将会导致出现“僵尸进程”,进而影响服务器端对进程的管控。 僵尸(Zombie)进程 第一次听到…

数据类型

常见的数据类型: int,整数类型(整形)bool,布尔类型str,字符串类型list,列表类型tuple,元组类型dict,字典类型set,集合类型float,浮点类型&#x…

python Web开发 flask轻量级Web框架实战项目--学生管理系统

上次发的一篇文章,有很多朋友私信我要后面的部分,那咱们就今天来一起学习一下吧,因为我的数据库这门课选中的课题是学生管理系统,所以今天就以这个课题为例子,从0到1去实现一个管理系统。数据库设计部分我会专门出一个…

《Java 核心技术面试》课程笔记(十二)

Java 有几种文件拷贝方式?哪一种最高效? 典型回答 Java 有多种比较典型的文件拷贝实现方式,比如:利用java.io 类库,直接为源文件构建一个 FileInputStream 读取,然后再为目标文件构建一个 FileOutputStre…

chatgpt赋能python:Python模块(Module)是什么?

Python模块(Module)是什么? Python模块(Module)是指一些预先编写好的代码,这些代码可以在程序中被引入和使用。它们可以包含可以复用的函数、常量和类。Python模块是一种封装程序代码的方法。 下载Python…

领取的AWS亚马逊云服务器到期会扣费的问题解决办法。

本篇文章主要讲解,领取的AWS亚马逊服务器到期后会持续扣费问题的解决办法。 作者:任聪聪 日期:2023年6月8日 关于aws服务器一年免费期限到期后扣费的问题,网络上的文章并不是很全,故此我通过个人的经验进行了如下的教程…

chatgpt赋能python:Python怎么print换行?

Python怎么print换行? 如果你是一个Python开发者,你可能遇到过需要在Python中打印输出换行的情况。本文将分享几种方式,让你学会如何在Python中print换行。 1. 使用"\n" 您可以在print语句中使用"\n"来表示换行。这个…

陈丹琦团队新作:单卡A100可训300亿参数模型啦!

夕小瑶科技说 原创 作者 | 智商掉了一地、ZenMoore 近年来,随着大模型的涌现,微调语言模型已经在各种下游任务上展现出了卓越的性能。然而,这些庞大模型的参数量常常达到数十亿甚至上百亿的级别,训练这样规模的模型需要消耗大量…