vs2019+opencv450+opencv contrib450+cmake3.25.2安装流程

news2025/7/14 13:00:57

目的

为了研究利用sift、orb、surf等算法进行视觉特征检测,第一次配置折腾了四五天。

电脑环境

win10
opencv4.5.0
opencv contrib 4.5.0
cmake3.25.2

报错

问题1

OpenCV(3.4.3) Error: The function/feature is not implemented (This algorithm is patented and is excluded in this configu ration; Set OPENCV_ENABLE_NONFREE CMake option and rebui1d the 1ibrary) in cv::xfeatures2d::SIFT::create, file F:\opencv343\opencv\opencv_contrib-3.4.3\modules\xfeatures2d\src\sift.cpp, 1ine 1207

在这里插入图片描述

问题2

vs2019 opencv450 无法打开opencv_world3450.lib

问题3

在这里插入图片描述

解决方法

第一次安装的版本是vs2019+opencv3.4.3+opencv contrib 3.4.3+cmake
结果就是上图中的问题1和问题3
参考这个文献,发现是cmake过程有问题

opencv+opencv_contrib+VS2019环境搭建中的许多坑

主要是通过这个现象发现配置存在问题:

  • 编译完成之后,能够在install目录下面看到x64文件夹,如果没有就说明哪个环节出了问题。

我配置完成后就没有x64这个文件夹。

以下是具体步骤:

1、下载opencv、opencv contrib和cmake

opencv 和opencv contrib的下载地址如下:

https://github.com/opencv

主要就是这俩,
在这里插入图片描述
点击进入tags,查询具体型号
在这里插入图片描述

例如我下载的就是opencv4.5.0
在这里插入图片描述
这块opencv我是下载的这个,直接安装。
在这里插入图片描述
opencv contrib 和opencv流程一样,不再赘述。

cmake可以访问这个网址:https://cmake.org/download/,找到对应的版本下载,这里下载的为win64-x64安装程序

我看网上也有说必须下源文件,不能这样直接安装,但是我这样弄了也没啥问题,我估计推荐下源代码是因为直接采用安装包这样直接安装会导致某些opencv的源代码虽然下载成功,但是没有内容,也就是大小是0k。

2、在本地电脑建立文件夹

其中new_build是个人新建的,opencv_contrib450是下载的拓展包解压后的文件夹,其余都是opencv安装时建立的文件。
在这里插入图片描述

3、cmake编译

第一个框是选择opencv自带的源码,第二个框是选择编译后放置的代码位置,
其中有以下注意事项:

  • 将OPENCV_EXTRA_MODULES_PATH路径填入opencv_contirb-master/modules
  • 将OPENCV_ENABLE_NONFREE打上对钩(这块网上说的都是因为sift因为专利问题不打钩就无法使用)

选择好后点击configure按键,然后等待完成。

在这里插入图片描述
红色就表示下载有问题,需要注意。

这块的configure可以重复多次点击,多次点击后红色的框就会全部消失,但是其实问题都还存在,解决办法就是在日志里挨个查看。

日志文件 CMakeDownloadLog.txt 地址就在新建的new_build下,里面可以查看文件地址应该在哪放着,文件名称是什么,然后自己单独下载,修改文件名字然后放置好地址即可。

例如

#use_cache "D:/study/opencv-4.0.0/.cache"
#do_copy "opencv_ffmpeg.dll" "849286ccc527c99e5a218b67f13c6e8c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg"

这两句的意思是说将 opencv_ffmpeg.dll(它的md5签名是 849286ccc527c99e5a218b67f13c6e8c,下载地址是  "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" )
 从 "D:/study/opencv-4.0.0/.cache" 拷贝到 "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg"目录下。

#missing "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg/opencv_ffmpeg.dll"
目标目录下没有此文件

#cmake_download "D:/study/opencv-4.0.0/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll"
下载此文件到源代码路径 /.cache/ffmpeg/,并命名为"md5-文件名"

# timeout on name lookup is not supported
# Trying 151.101.108.133...
# TCP_NODELAY set
# connect to 151.101.108.133 port 443 failed: Connection refused
# Failed to connect to raw.githubusercontent.com port 443: Connection refused
# Closing connection 0
#
连接到服务器失败

简单来说就是有两种可能

  • opencv文件下的sources下的某些文件大小为0k,为空,需要替换。
  • 编译后的new_build下某些文件丢失,其实就是 opencv文件下的sources下的某些文件。

提供个快速从github加速下载的网址:GitHub Proxy

我本次缺少了以下三个文件,下载后文件名称如下:
opencv_videoio_ffmpeg.dll
opencv_videoio_ffmpeg_64.dll
face_landmark_model.dat

将其修改后为:
37e2dadf776631acc8856e281f29cf42-opencv_videoio_ffmpeg.dll
cf5dba83edf8619f57ccff4edb989c62-opencv_videoio_ffmpeg_64.dll
7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat

全部将其放置到对应文件夹下以后,可以再次点击configure按键,然后看看日志文件,显示没有缺失后就证明安装完成。


这块是别人的问题描述:
在这里插入图片描述


这块比较麻烦,刚开始我也不懂,后来弄得多了就明白其实就是没下载下来文件,如果还不懂可以参考以下文章:

代码笔记24 windows+cmake+Opencv4.5.5安装中出现的IPPICV: Download:ippicv_2020_win_intel64_20191018 general.zipl问题

【从零学习OpenCV 4】安装过程中问题解决方案

CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结

总结下注意事项

  • 在 search 对话框中输入OPENCV_EXTRA_MODULES_PATH,找到OPENCV_EXTRA_MODULES_PATH后在value中填入编译opencv_contrib解压目录中的modules路径(注意此处路径的反斜杠\要改成正斜杠/,反斜杠\有转义字符的意思),最好是搜索填入路径,不要在文件夹下复制然后粘贴路径。

4、vs编译

我的文件在new_build下,点击opencv.sln,然后进入到vs2019中,首先选择是在debug64下进行编译,点击下图所示的 生成解决方案 ,点击下方的 重新生成解决方案 也可以。
在这里插入图片描述

然后在 CMakeTargets 中的 INSTALL ,然后右键选择 “仅限于项目” --> “仅生成INSTALL”;
在CMakeTargets中的INSTALL,然后右键选择“仅限于项目”-->“仅生成INSTALL”;

其次,完成编译后,可在切换至Release模式下,把重新生成解决方案和生成install的操作再来一次。此时,install目录包含了我们需要的头文件、库文件等;

5、配置环境

附上我的电脑环境
在这里插入图片描述
具体的位置如下图所示
在这里插入图片描述

6、测试代码

#include "opencv2/opencv.hpp"  
#include"opencv2/xfeatures2d.hpp"


using namespace cv;
using namespace std;

int main() {
 
    Mat img = imread("C:/Users/Desktop/test_1/1.png", 1);
    Ptr<Feature2D> sift = SIFT::create();
    vector<KeyPoint> keypoints;
    Mat descriptors;

    sift->detectAndCompute(img, noArray(), keypoints, descriptors);
    drawKeypoints(img, keypoints, descriptors, Scalar(0, 255, 255));
    imshow("Result", descriptors);
    waitKey(0);

    return 0;
}

运行需要设置属性

在VC++目录下,包含目录:

F:\opencv455\opencv\new_build\install\include\opencv2
F:\opencv455\opencv\new_build\install\include

库目录:

F:\opencv455\opencv\build\x64\vc15\lib
F:\opencv455\opencv\new_build\install\x64\vc16\lib

在连接器下,常规,添加库目录:

F:\opencv455\opencv\build\x64\vc14\bin
F:\opencv455\opencv\build\x64\vc15\bin

输入,附加依赖项:

opencv_world450d.lib

测试原图如下所示:

在这里插入图片描述

最后的效果如下图所示
在这里插入图片描述

附上我查找问题时的一些参考:

win10+vs2019+opencv+opencv_contirb 安装教程

VisualStudio2019安装配置OpenCV的C++环境

OpenCV + OpenCV Contrib安装教程(windows)

win10-vs2019-opencv_contrib安装教程(一步到位)

【VS2019+OpenCV4.5.1+OpenCV_contrib4.5.1安装+配置保姆式教程】

关于CMake Warning at cmake/OpenCVDownload.cmake:202 (message): FFMPEG: Download下载失败解决办法(傻瓜教程)

OpenCV之扩展模块安装

IPPICV: Download failed: 6;“Couldn‘t resolve host name“

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

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

相关文章

基于QUIC 协议的HTTP/3

HTTP/2 存在一些比较严重的与 TCP 协议相关的缺陷&#xff0c;但由于 TCP 协议僵化&#xff0c;我们几乎不可能通过修改 TCP 协议自身来解决这些问题&#xff0c;那么解决问题的思路是绕过 TCP 协议&#xff0c;发明一个 TCP 和 UDP 之外的新的传输协议。但是这也面临着和修改 …

Dart 表达式以及语法糖汇总

前言 Dart语言中有许多语法糖或者说lambda表达式&#xff0c;语法和代码量是简洁了许多&#xff0c;但给想要入门的我添加了许多困扰&#xff0c;我经常看官方API或者第三方文档API的时候&#xff0c;在示例中大量的使用了类似的语法糖&#xff0c;让代码的可读性大大下降&…

内部知识管理应该怎么做?

许多公司都知道需要有一个面向客户的知识库&#xff0c;以加强客户服务&#xff0c;提供更好的客户体验。 但是很多企业没有意识到的是&#xff0c;拥有一个内部知识库软件对于员工改善沟通和促进知识共享的重要性。 协作是组织成功的关键部分&#xff0c;通过明确的远景和使命…

微服务之Ribbon负载均衡

&#x1f3e0;个人主页&#xff1a;阿杰的博客 &#x1f4aa;个人简介&#xff1a;大家好&#xff0c;我是阿杰&#xff0c;一个正在努力让自己变得更好的男人&#x1f468; 目前状况&#x1f389;&#xff1a;24届毕业生&#xff0c;奋斗在找实习的路上&#x1f31f; &#x1…

论文笔记:DropMessage: Unifying Random Dropping for Graph Neural Networks

&#xff08;AAAI 23 优秀论文&#xff09; 1 intro GNN的一个普遍思路是&#xff0c;每一层卷积层中&#xff0c;从邻居处聚合信息 尽管GNN有显著的进步&#xff0c;但是在大规模图中训练GNN会遇到各种问题&#xff1a; 过拟合 过拟合之后&#xff0c;GNN的泛化能力就被限制…

Matplotlib精品学习笔记001-图形绘制常见的组分有哪些?

简介 从头学习&#xff0c;逐步精美 学习蓝本 学习资料是Quick start 内容 所有绘图的起始步骤 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np通过一个简单的例子认识Matplotlib绘图的过程&#xff0c;见代码注释 import matplotlib.py…

重温Python基础知识点,又来重新巩固一遍

前言 最近有很多朋友刚接触python学的还是有点模糊 还有的朋友就是想重温一下基础内容&#xff0c;毕竟基础不牢地动山摇 行吧&#xff0c;就总结了以下的一些知识点&#xff0c;可以都看看哈 一、开发环境搭建 更多学习资料.点击领取即可 1.1 Python解释器的安装 Python解…

ctfshow 代码审计专题

文章目录web 301web 302web 303web 304web 305web 306web 307web 308web 309web 310web 301 简单看一下&#xff0c;在checklogin.php中发现了sql语句&#xff0c;且没过滤&#xff0c;直接sql注入。 –form测试,–batch绕过waf.–dump列出所有库和表。 得到账号密码&#xf…

MySQL数据库————MVCC

MySQL的脏读、幻读、不可重复读 脏读 现在有两个事务在操作table表&#xff0c;事务B修改了id2的name字段为李老四&#xff0c;但是没有提交&#xff0c;事务A查询id2的数据&#xff0c;得到name为李老四&#xff1b;事务B发生回滚&#xff0c;id2的数据的name又变回李四&…

Linux 防火墙配置(iptables和firewalld)

目录 防火墙基本概念 Iptables讲解 Iptables表 Iptables规则链 Iptables控制类型 Iptables命令配置 firewalld讲解 Firewalld区域概念 Firewalld两种配置方法 firewall-cmd命令行基础配置 firewall-config图形化配置 防火墙基本概念 防火墙就是根据系统管理员设定的…

用 tensorflow.js 做了一个动漫分类的功能(二)

前言&#xff1a;前面已经通过采集拿到了图片&#xff0c;并且也手动对图片做了标注。接下来就要通过 Tensorflow.js 基于 mobileNet 训练模型&#xff0c;最后就可以实现在采集中对图片进行自动分类了。这种功能在应用场景里就比较多了&#xff0c;比如图标素材站点&#xff0…

java集成redis简单存储

这里主要将数据存redis并设置过期时间、通过key删除redis、通过key更新redis&#xff08;续期&#xff09; 将数据存redis并设置过期时间 引入redis依赖 import org.springframework.data.redis.core.StringRedisTemplate;AutowiredStringRedisTemplate stringRedisTemplate…

【基础教程】Appium自动化测试,太详细了!

Appium简介Appium是一款开源的Appium自动化工具, 基于Webdriver协议, 主要有以下3个特点:全能: 支持iOS/Andorid/H5/混合App/WinApp通用: 支持Win/Linux/Mac, 支持Java/Python/Ruby/Js/PHP等各种语言开源: 免费App自动化测试工具对比iOS官方:Uiautomation/XCUITest: 白盒, UI测…

(二十)、完成个人中心页面的数据统计+设置详情页点赞用户的头像组【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1&#xff0c;个人中心页面的数据统计 数据统计包括两项内容&#xff1a;1.当前登录用户的点赞总数量。2.当前登录用户发布文章的总数量 1.1&#xff0c;在self页面data中定义对象 data() {return {totalObj:{artNum:0,likeNum:0}};},1.2&#xff0c;获取总数量的方法&#x…

多线程(初识线程)

线程的诞生 了解进程存在的意义 实现了并发编程的效果&#xff08;并发编程&#xff1a;有可能是并发执行&#xff0c;也有可能是并行执行&#xff09; 并发编程的目的&#xff1a;充分利用上多核CPU资源&#xff0c;提升运行效率 了解进程创建和销毁的过程带来的问题 进程是…

系列二、函数

一、定义 函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着&#xff0c;这一段程序或代码MySQL中 已经给我们提供了&#xff0c;我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。二、字符串函数 2.1、案例 2.1.1、concat 字符串拼接 s…

js中?.、??的具体用法

1、?. &#xff08;可选链运算符&#xff09; 在javascript中如果一个值为null、undefined&#xff0c;直接访问下面的属性&#xff0c;会报 Uncaught TypeError: Cannot read properties of undefined 异常错误。而在真实的项目中是会出现这种情况&#xff0c;有这个值就读这…

泛型擦除(Generic erase)(内含教学视频+源代码)

泛型擦除&#xff08;Generic erase&#xff09;&#xff08;内含教学视频源代码&#xff09; 教学视频源代码下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87473560 源代码中使用的泛型&#xff0c;在经过编辑后&#xff0c;代码中就看不到泛…

PX4之飞行控制框架

PX4的飞行控制程序通过模块来实现&#xff0c;与飞控相关的模块主要有commander&#xff0c;navigator&#xff0c;pos_control&#xff0c;att_control这几个&#xff0c;分别可以在src/modules目录中找到。 commander - 指令/事件处理模块&#xff0c;处理指令、遥控器输入和…

新C++(9):谈谈,翻转那些事儿

"相信羁绊&#xff0c;相信微光&#xff0c;相信一切无常。"一、AVL树翻转那些事儿(1)什么是AVL树&#xff1f;在计算机科学中&#xff0c;AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1&#xff0c;所以它也被称为高度平衡树。…