VS2017+OpenCV4.5.1 安装与配置,扩展模块opencv_contrib的安装与配置

news2024/9/29 5:32:20

文章目录

  • VS2017+OpenCV4.5.1 安装与配置,扩展模块opencv_contrib的安装与配置
        • 1、OpenCV下载:
          • (1)下载地址:https://opencv.org/releases/page
          • (2)解压到指定文件夹:
        • 2、配置环境
          • (1)配置电脑的系统环境变量:告诉电脑opencv在哪里;
            • ① 新建项目:
            • ② 配置包含路径
        • 3、至此 opencv 环境配置完成,让我们来测试一下:
        • 4、opencv 扩展模块的安装与配置
          • (1)资源准备
          • (2)CMake安装
          • (3)使用CMake构建opencv源码
          • (4)使用CMake构建扩展库 opencv_contrib
          • (5)Visual Studio 2017 生成install文件夹

VS2017+OpenCV4.5.1 安装与配置,扩展模块opencv_contrib的安装与配置

1、OpenCV下载:

(1)下载地址:https://opencv.org/releases/page
(2)解压到指定文件夹:

下载:
请添加图片描述
解压:我自己建的文件夹,C:\cpp\vs
请添加图片描述解压后的资源:
请添加图片描述
上面的sources就是opencv的源码库:git clone --branch 4.5.1 https://github.com/opencv/opencv

2、配置环境

(1)配置电脑的系统环境变量:告诉电脑opencv在哪里;

请添加图片描述
将opencv的bin目录添加到path:C:\cpp\vs\opencv\build\x64\vc15\bin
请添加图片描述##### (2)接下来打开VS2017编辑器,进行编辑器的配置:

① 新建项目:

请添加图片描述
选择,下一步
请添加图片描述
选择,空项目
请添加图片描述
新建源文件
请添加图片描述
再VS里找到配置项页面:视图 -> 属性管理器 -> VC++目录
请添加图片描述
请添加图片描述
请添加图片描述

② 配置包含路径
  • C:\cpp\vs\opencv\build\include

  • C:\cpp\vs\opencv\build\include\opencv2
    请添加图片描述###### ③ 配置库目录

  • C:\cpp\vs\opencv\build\x64\vc15\lib
    请添加图片描述###### ④ 配置链接器 -> 附加依赖项
    请添加图片描述
    请添加图片描述

3、至此 opencv 环境配置完成,让我们来测试一下:

#include <opencv2\opencv.hpp>	// 加载opencv4头文件
#include <iostream>

using namespace cv;		//opencv的命名控件
using namespace std;

int main(int argc, char argv) {

	Mat img;					// 声明一个保存图像的类
	img = imread("C:\\cpp\\vs\\suzy.jpg");		// 读取图像
	resizeWindow("input", 300, 400);		// 设置窗口大小为300 * 400像素
	namedWindow("input", WINDOW_NORMAL);		// 创建一个具有自适应大小的窗口
	imshow("input", img);				// 显示图像
	waitKey(0);					// 等待键盘输入
	destroyAllWindows();
	return 0;
}

vs运行代码:

  • 生成 -> 重新生成解决方案
  • 调试 -> 开始执行(不调试)
    请添加图片描述

4、opencv 扩展模块的安装与配置

OpenCV在视觉算法中的功能非常强大,其中一个原因就是该算法库一直在与时俱进的更新,对于具有专利的算法(如SURF)以及一些还没有稳定的算法,OpenCV会将其置于扩展模块中,这些扩展模块包含在opencv_contrib代码库中,对于稳定的算法,会被移到OpenCV主仓库代码中,因此读者需要谨慎的使用opencv_contrib,因为不同版本的函数可能存在差异,一定要下载与你安装的OpenCV相同版本的,否则编译时会出现错误;

在OpenCV 3.x版本之后,opencv_contrib就不再包含于OpenCV源码中,opencv_contrib的源码可以在Github上下载,然后参与OpenCV源码编译;

opencv主库:https://github.com/opencv/opencv
opencv扩展库:https://github.com/opencv/opencv_contrib
(1)资源准备
  • 进入 opencv 解压目录 cd C:\cpp\vs\opencv
  • 在 C:\cpp\vs\opencv 目录下新建文件夹 newbuild,用于存放编译输出文件
  • 在 C:\cpp\vs\opencv 目录下载 opencv4.5.1 的扩展库:git clone --branch 4.5.1 https://github.com/opencv/opencv_contrib
(2)CMake安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrJixMzR-1687774827901)(.\image\cmake.png)]

(3)使用CMake构建opencv源码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0bgfAB5m-1687774827902)(.\image\cmake.png)]

选择opencv源码文件,构建后生成文件存放位置,点击【Configure】按钮进行源码编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gjrhbnHW-1687774827904)(.\image\resource1.png)]

选择vs版本,选择编译平台

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jnK3IKGs-1687774827905)(.\image\resource2.png)]

开始编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UJbSTQWI-1687774827906)(.\image\resource3.png)]

当出现 Configuring done 后说明构建成功,在CMake界面会出现很多变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rmoj0nkg-1687774827907)(.\image\resource4.png)]

(4)使用CMake构建扩展库 opencv_contrib

找到 BUILD_opencv_world 在变量后面的方框内打上"√",该变量的含义是生成一个大的.lib文件,在配置链接器时只有一个 “opencv_world410d.lib” 文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zD1bqk3Z-1687774827908)(.\image\contrib1.png)]

找到 OPENCV_ENABLE_NONFREE 在变量后面的方框内打上"√",该变量的含义是为了在编译成功后可以使用具有专利保护的算法,如果该变量不被选中,就不能使用例如SIFT算法在内的具有专利保护的算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M8WAVr6v-1687774827909)(.\image\contrib2.png)]

找到 OPENCV_EXTRA_MODULES_PATH 变量,该变量的含义是告诉编译器扩展包的源码在哪里,选择我们刚才下载的opencv_contrib安装包里的modules文件夹:C:\cpp\vs\opencv\opencv_contrib\modules,如果这个变量为空,在编译过程中也不会报错,只是安装了OpenCV的基础版

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qp1VcdEe-1687774827910)(.\image\contrib3.png)]

再次点击【Configure】直到所有的红色变量变成白色,之后点击【Generate】开始编译,编译成功后会在newbuild文件夹中生成许多文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WCAcJ7LH-1687774827912)(.\image\contrib4.png)]

(5)Visual Studio 2017 生成install文件夹

在newbuild文件夹中,找到OpenCV.sln文件双击,使用Visual Studio 2017打开该文件,生成 -> 重新生成解决方案,这个过程会比较漫长,漫长时间的等待,大概1~2个小时
请添加图片描述在资源管理器中找到CMakeTargets中的INSTALL文件,右键 -> 仅用于项目 -> 仅生成INSTALL,会在newbuild文件夹中生成一个名为install的文件夹,我们用来环境配置的所有文件都存放在这个文件夹中,按照前面介绍的配置opencv环境的方式配置即可;

编译后newbuild 文件夹非常的大,会有几个G的文件,但是除了install文件夹最重要,绝大多数文件都是垃圾文件,如果觉得硬盘存储量有限,可以删除install文件夹之外的所有文件;

22222

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

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

相关文章

如何进行可视化的数据过滤?Sugar BI 的过滤组件教你快速实现

Sugar BI 中支持了 10种过滤组件&#xff0c;这些过滤组件都是让用户在浏览报表或大屏的时候&#xff0c;能够交互式的对页面上的图表进行数据的过滤。所有过滤组件对图表的数据过滤设置都是一样的&#xff0c;如下&#xff1a; 例如页面中已有两个图表&#xff08;这两个图表…

人脑髓鞘化

髓鞘化 大纲&#xff1a;髓鞘化定义&#xff1b;髓鞘化能用来干嘛&#xff1b;髓鞘化现阶段存在的痛点&#xff1b;现有方法如何解决问题&#xff1b;我们方法的优势。 定义 髓鞘化是指髓鞘发展的过程&#xff0c;它使神经兴奋在沿神经纤维传导时速度加快&#xff0c;并保证…

开窗函数分享

开窗函数定义 开窗函数&#xff1a;用于为行定义一个窗口&#xff0c;它一组值进行操作&#xff0c;不需要使用group by子句对数据进行分组&#xff0c;能够在同一行中同时返回基础行的列和聚合列。 划重点!!! 开窗函数返回&#xff1a;基础行列、聚合列 下面通过例子看一下…

OJ# 376 机器翻译

题目描述 ​ 小李的电脑上安装了一个机器翻译软件&#xff0c;他经常用这个软件来翻译英语文章。 ​这个翻译软件的原理很简单&#xff0c;它只是从头到尾&#xff0c;依次将每个英文单词用对应的中文含义来替换。对于每个英文单词&#xff0c;软件会先在内存中查找这个单词的…

简单易用多git服务器ssh密钥配置管理

文章目录 前言一、什么是ssh-key二、配置步骤添加ssh-key配置多ssh-key 总结 前言 快速理解如何配置管理多个git服务器的ssh&#xff0c;当我们有多个git帐号时会涉及如何管理不同的remote使用不同的git账户登陆推送 当前repo的origin remote是github&#xff0c;我们在推送时…

EMMC基础知识总结

1、说明 1.0 整体架构 ‘ EMMC最简单的可理解为带有控制器的FLASH&#xff0c;具体结构如下&#xff1a; EMMC&#xff1a; Embedded multiMediaCard EMMC. EMMC内部&#xff1a; host interface 、 flash controller 、 flash memory 1.1 flash memory 结构 EMMC 中一般…

学习Vue3——watchEffect(高级侦听器)

立即运行一个函数&#xff0c;同时响应式地追踪其依赖&#xff0c;并在依赖更改时重新执行。 watchEffect有两个参数 第一个参数就是要运行的副作用函数 第二个参数是一个可选的选项&#xff0c;可以用来调整副作用的刷新时机或调试副作用的依赖 API—watchEffect 基本用法 …

电脑必备,推荐几款好用的程序软件,让你工作更加高效

在当今的信息化时代&#xff0c;电脑已成为我们日常生活中必不可少的工具。而在电脑上安装一些好用的程序软件&#xff0c;能够大大提高我们的工作效率和体验。但是市面上的软件五花八门&#xff0c;要如何选择呢&#xff1f;下面将为大家推荐几款值得使用的程序软件&#xff0…

告别脚本小子系列丨JAVA安全(8)——反序列化利用链(下)

0x01 前言 在前面的文章中介绍了基于CC链的反序列化利用方式&#xff0c;并且通过最终调用Runtime类的exec方法达到命令执行的效果。在CC链中还可以通过xalan来执行命令。 xalan是java操作xml的库&#xff0c;属于java内置的官方库之一&#xff0c;在CC链中主要用到的是com.sun…

论文研读|TNNLS 期刊近三年对话生成工作介绍(2篇)

前言&#xff1a;本篇博客记录TNNLS期刊近三年的对话生成相关工作中本人比较感兴趣的两篇工作。首先给大家分享一下论文精确查找的方式&#xff0c;然后对两篇工作的主要思想进行简要介绍。 目录 1. 论文精确查找方法2. 论文简介2.1 面向用户个性保持与回复多样性的两阶段对话生…

错误:No module named ‘osgeo’

from osgeo import gdal 报错&#xff1a;No module named ‘osgeo’ pip install gdal 会出错&#xff0c;也不知道什么原因。 解决方案&#xff1a; 下载whl,然后pip install .whl即可。 详细步骤如下&#xff1a; whl下载地址&#xff1a;https://www.lfd.uci.edu/~go…

基于java+servlet+mysql-图书商城

基于javaservletmysql-图书商城 一、系统介绍二、功能展示1.项目骨架2.首页3.图书详情4.我的订单5.我的购物车6、注册7、登录8、图书管理9、订单管理 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型&#xff1a;Java web项目 项目名称&#xff1a;基于javaservlet…

浅谈企业能源监测管理系统的设计与应用

安科瑞 华楠 摘要: 针对企业目前能源监测现状, 结合企业信息化建设情况和发展需要, 介绍了能源监测管理信息系统, 提出了企业能源监测管理系统建设建议。 关键词:管理系统; 能源监测; 企业信息化 0 引言 节能降耗是缓解中国资源约束的根本出路, 也是提高企业自主创新能力的…

【机器学习】如何选择合适的假设函数

在前面的线性回归中&#xff0c;我们可以使用不同次数的多项式对数据集进行拟合&#xff0c;但是选择次数过低的多项式会导致欠拟合&#xff0c;选用次数过多的多项式会过拟合&#xff0c;那么如何选择合适的多项式呢&#xff1f;这就是本文需要解决的问题。 想要了解自己训练…

什么是α测试β测试和灰度测试?

吃软件测试这碗饭的&#xff0c;如果基础理论都不懂&#xff0c;谈何长久&#xff1f; 欢迎来学习本系列&#xff0c;基础理论比较枯燥&#xff0c;这也是为什么现在很少人掌握的主要原因。热饭尽量用浅显易懂 生动的例子 来帮助大家学习基础理论&#xff0c;所以请耐心看完此系…

纯JavaScript简单实现移动端网页的上拉加载、下拉刷新

公司要在安卓软件中&#xff0c;添加H5网页包&#xff0c;实现订单卡片列表&#xff0c;要求有上拉加载、下拉刷新的功能。 经过搜索资料后&#xff0c;实现如下&#xff1a; 创建一个类PullData class PullData() {/*** 类的构造函数&#xff0c;在new PullData({xx: xxx})时…

尚硅谷甄选--(暂时不更新,实习,后期有时间更)

文章目录 搭建后台管理系统模板项目的资源地址项目初始化2.1.1环境准备2.1.2初始化项目2.2项目配置一、eslint配置1.1vue3环境代码校验插件1.2修改.eslintrc.cjs配置文件1.3.eslintignore忽略文件1.4运行脚本 二、配置**prettier**2.1安装依赖包2.2.prettierrc.json添加规则2.3…

OpenCV——总结《车牌识别》

1.图片中的hsv hsv提取蓝色部分 # hsv提取蓝色部分 def hsv_color_find(img):img_copy img.copy()cv2.imshow(img_copy, img_copy)"""提取图中的蓝色部分 hsv范围可以自行优化cv2.inRange()参数介绍&#xff1a;第一个参数&#xff1a;hsv指的是原图第二个参…

阿里老员工吐槽:部门来了个“卷”王同事,我们都要跟着加班..

随着IT互联网热愈演愈烈&#xff0c;大批应届生选择毕业后进入IT圈&#xff0c;还有另一批打工人冲着高薪福利待遇转行IT行业&#xff0c;越来越多人涌入程序员大军中。加之互联网行业的火爆&#xff0c;催生了大量程序员岗位&#xff0c;门槛也较之前来说越来越低了&#xff0…

Python采集商品数据信息,看看一般怎样销量会多

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 环境使用: python 3.8 >>>>>> 运行代码 pycharm 2022.3 >>>>>> 辅助敲代码 模块使用: selenium >>> pip install selenium3.141.0 指定版本安装 <模拟人的行为去操…