Visual Studio 2017 + opencv4.6 + contribute + Cmake(Aruco配置版本)指南

之前配置过一次这个,想起这玩意就难受,贼难配置。由于要用到里面的一个库,不得已再进行配置。看网上的博客是真的难受,这写一块,那里写一块,乱七八糟,配置一顿发现写的都是错的,还得重新配置。(本篇文章开始配置错了,然后是重新配置的,需要全文通读


A. 最初配置(问题版)

一. 安装环境

系统:windows10

软件:
①Visual Studio 2017  下载网址:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux

②Cmake(.msi文件,我这里是3.22版本) 下载网址:CMake - Upgrade Your Software Build System

文件:

①opencv 4.6.0 下载网址:Releases - OpenCVicon-default.png?t=N7T8https://opencv.org/releases/

②opencv_contribute 下载网址:GitCode - 开发者的代码家园icon-default.png?t=N7T8https://gitcode.com/opencv/opencv_contrib/tree/4.x?utm_source=csdn_github_accelerator&isLogin=1

二. Cmake安装过程

这里只进行讲解Cmake的安装过程,别的安装过程没啥特别注意点

我把所有的文件安装到了这个位置

三. Cmake编译过程

第一步:在opencv文件夹之中新建文件夹

第二步:打开相应的Cmake软件

进行如下操作

第三步: 打开你的VPN,连接外网

第四步:配置环境

第五步:检测错误

一般而言,咱们在进行配置的时候,会出现上下两个部分都出错的情况

第二个部分解决方式:

错误一:

网上查了一下,这个地方的问题时由于Cmake没有安装到C盘的原因(但是我也不知道对不对,我感觉安装到别的地方也没事。为了规避出现错误,我就安装到c盘吧),我去,是真恶心。

边进行上面安装,一边下载python2.7,下载官网:Python Release Python 2.7.0 | Python.org

找到电脑的系统变量,这个是很好找到的,进行添加。

错误二:

将“OPENCV_GENERATE_SETUPVARS”之中的对号不选中,

第一个部分解决方式:

在界面中的变量中找到“BUILD_opencv_world”和“OPENCV_ENABLE_NONFREE”变量,在变量后面选中√。

找到“OPENCV_EXTRA_MODULES_PATH”变量,在此变量后面加上contribute_4.6之中的module路径。

在此点击,configure即可。

可以见到上下两个部分都没有报错。

直接点击Generate即可,

配置完成。

但是第二部分有的时候解决方式:我之前遇到过很多次,剧难配置。

(1)打开编译路径下的,“CMakeDownloadLog.txt”文件。

打开之后是这个样子的

哎呀,字体有点小看不清放大一点:

(2)看一下我缺失的文件,找do_copy、missing、check_md5、copy是一组

#do_copy "opencv_videoio_ffmpeg.dll" "5573e2262ad1298e603122b7759fc2f6" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/opencv_videoio_ffmpeg.dll" "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg"
#missing "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg/opencv_videoio_ffmpeg.dll"
#check_md5 "D:/opencvuse/opencv/sources/.cache/ffmpeg/5573e2262ad1298e603122b7759fc2f6-opencv_videoio_ffmpeg.dll"
#copy "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg/opencv_videoio_ffmpeg.dll" "D:/opencvuse/opencv/sources/.cache/ffmpeg/5573e2262ad1298e603122b7759fc2f6-opencv_videoio_ffmpeg.dll"#do_copy "opencv_videoio_ffmpeg_64.dll" "5f9e2b2e04c15f080f40e844de80c867" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/opencv_videoio_ffmpeg_64.dll" "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg"
#missing "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg/opencv_videoio_ffmpeg_64.dll"
#check_md5 "D:/opencvuse/opencv/sources/.cache/ffmpeg/5f9e2b2e04c15f080f40e844de80c867-opencv_videoio_ffmpeg_64.dll"
#copy "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg/opencv_videoio_ffmpeg_64.dll" "D:/opencvuse/opencv/sources/.cache/ffmpeg/5f9e2b2e04c15f080f40e844de80c867-opencv_videoio_ffmpeg_64.dll"#do_copy "ffmpeg_version.cmake" "8862c87496e2e8c375965e1277dee1c7" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/ffmpeg_version.cmake" "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg"
#missing "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg/ffmpeg_version.cmake"
#check_md5 "D:/opencvuse/opencv/sources/.cache/ffmpeg/8862c87496e2e8c375965e1277dee1c7-ffmpeg_version.cmake"
#copy "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg/ffmpeg_version.cmake" "D:/opencvuse/opencv/sources/.cache/ffmpeg/8862c87496e2e8c375965e1277dee1c7-ffmpeg_version.cmake"

可以看到我这里是缺失了三个文件,当然这个地方可以去找就可以,然后复制下来,但是非常难找。

(3)分别查找三个文件,进行下载

#do_copy "opencv_videoio_ffmpeg.dll" "5573e2262ad1298e603122b7759fc2f6" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/opencv_videoio_ffmpeg.dll" "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg"
#missing "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg/opencv_videoio_ffmpeg.dll"
#check_md5 "D:/opencvuse/opencv/sources/.cache/ffmpeg/5573e2262ad1298e603122b7759fc2f6-opencv_videoio_ffmpeg.dll"
#copy "D:/opencvuse/opencv/opencv_contribute/3rdparty/ffmpeg/opencv_videoio_ffmpeg.dll" "D:/opencvuse/opencv/sources/.cache/ffmpeg/5573e2262ad1298e603122b7759fc2f6-opencv_videoio_ffmpeg.dll"

a.首先打开copy最后一行所在的目录下的文件:
"D:/opencvuse/opencv/sources/.cache/ffmpeg/5573e2262ad1298e603122b7759fc2f6-opencv_videoio_ffmpeg.dll"

将“5573e2262ad1298e603122b7759fc2f6-opencv_videoio_ffmpeg.dll”进行删除。

b.在do_copy之中查找第三个双引号之中的内容https://raw.githubusercontent.com/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/opencv_videoio_ffmpeg.dll,复制到浏览器中下载

c.将上述之中的.dll重命名为“5573e2262ad1298e603122b7759fc2f6-opencv_videoio_ffmpeg.dll”

已经重命名,进行复制。

d.将其粘贴到与a步骤相同的目录下。

e.上述的a-d步骤将第一个文件配置好了,开始进行第二个、第三个文件的配置,同第一个文件。

但是第三个文件我下载不下来,试一下,看看有没有问题

四. visual studio环境配置

第一步: 打开安装目录下的.sln文件

第二步:

第三步:

点击右上角的生成。接着听一首 “送你一朵小红花”:网易云音乐网易云音乐是一款专注于发现与分享的音乐产品,依托专业音乐人、DJ、好友推荐及社交功能,为用户打造全新的音乐生活。icon-default.png?t=N7T8https://music.163.com/#/song?id=2108827960&market=baiduqk

再来一首黄霄雲的“打开”:

网易云音乐网易云音乐是一款专注于发现与分享的音乐产品,依托专业音乐人、DJ、好友推荐及社交功能,为用户打造全新的音乐生活。icon-default.png?t=N7T8https://music.163.com/#/song?id=558097640&market=baiduqk听完两首歌,等了俩小时。

还是配置错了。

可以见到我在上面进行配置的时候出现的错误是无法打开当前目录下的输入文件..\..\lib\Release\opencv_world460.lib


B. 第二天重新进行配置

错误的发现:

上面的网址我是打开的:GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules

他的界面是这样的

我直接将其进行了下载,作为opencv_contribute,是错误的。

需要点击tags按钮选择自己的版本

此刻网址变为:https://github.com/opencv/opencv_contrib/tags多了一个tags标签 

将其下载下来就可以了。

这里我建议两个同时下载,一开始我只下载一个,速度比较慢,然后同时下载,发现第二个压缩包更快一点。

重新配置版本:

一. 将opencv4.6进行重新配置

下载opencv放置到opencv4.6文件中

打开属性管理器

右键打开属性页,配置(不过多赘述)

测试:

#include <opencv2\opencv.hpp>	// 加载opencv4头文件
#include <iostream>using namespace cv;		//opencv的命名空间
using namespace std;int main(int argc, char argv) {Mat img;					// 声明一个保存图像的类img = imread("被匹配图.png");		// 读取图像//resizeWindow("input", 300, 400);		// 设置窗口大小为300 * 400像素namedWindow("input", WINDOW_NORMAL);		// 创建一个具有自适应大小的窗口imshow("input", img);				// 显示图像waitKey(0);					// 等待键盘输入destroyAllWindows();return 0;
}

成功。

二.下载Cmake3.26.2

连接外网,配置过程同上述过程。

新建文件夹

选择文件夹(步骤同上)

见到下半部分出现错误

同上面的步骤进行两个选√、一个去√和一个配置路径的过程。

针对于第二部分报红:

以第一个报红为例,此处参考vs2017+cuda10..02+cudnn7.6.5+opencv4.4+opencv_contribute编译_cuda10.2+opencv4.7-CSDN博客

将 download_vgg.cmake中的https://raw.githubusercontent.com改为https://raw.staticdn.net

之后重新在cmake 里configure即可。

其他错误:将https://raw.githubusercontent.com改为https://raw.staticdn.net
里面有一些chatqr错误,因为我不用,所以缺失就缺失吧。

之后configure直到不报红。

打开opencv.sln

重新生成解决方案:

成功生成109个,失败1个,跳过10个。先试一试,忽略那个失败,继续进行。

发现没有生成install,重试


非常重要之关于第二部分报红最佳解决方式​​​​​​​

见我的博客

见我博客:Cmake+VS2017+Opencv+OpencvContrib+PCL1.8.1配置过程之中问题的出现(如何避坑)_vs2017+opencv+pcl-CSDN博客文章浏览阅读1.2k次。Cmake+VS2017+Opencv+OpencvContrib+PCL1.8.1配置过程之中问题的出现(如何避坑),对于在Cmake+VS2017+Opencv+OpencvContrib配置过程之中出现问题的过程进行一个思路整理,当然,这里的问题可能是我出现的,仅仅是供给参考.不得不吐槽一下,配置过程之中都是坑,下面就是总结的一写避坑指南.配置一次需要花费三四十分钟,配置错了还得重新配置,真的难受死了._vs2017+opencv+pclhttps://blog.csdn.net/m0_47489229/article/details/127156364在C:\Windows\System32\drivers\etc\hosts之中的hosts.txt文件的末尾增加一句151.101.56.133 raw.githubusercontent.com就可以了。这是我认为最简单和直接的方式,反正我在这一次性使用这个方式就配置好了,别的方法确实不好用。


接下来的重试过程同上,只不过我就没改后面的错误,配置过程只配置了OPENCV_EXTRA_MODULES_PATH与OPENCV_ENABLE_NONFREE,因为下半部分即便有错我不用了就可以了。BUILD_opencv_world我没有进行勾画对号,因为在使用的过程中,生成一个文件容易出错,后面大不了一个个配置就可以了。我想要的是Aruco配置,不是全部的配置。

出现错误就config,最后Generate。【我忘记了之前是咋配置成功的了,这就是个玄学】

全部成功,经历大概半个小时。

install成功。

可以见到生成的install文件夹。配置Path环境变量。

C. Aruco配置

一. Aruco下载

aruco下载地址:ArUco download | SourceForge.netDownload ArUco for free. Augmented reality library based on OpenCV. ArUco is a minimal library for Augmented Reality applications based exclusively on OpenCV. Relies on b/w markers with codes that are detected by calling a single function.icon-default.png?t=N7T8https://sourceforge.net/projects/aruco/aruco生成官网:Online ArUco markers generatorGenerate ArUco marker for printing with dictionary selectionicon-default.png?t=N7T8https://chev.me/arucogen/

aruco参考网址:

OpenCV: Detection of ArUco Markersicon-default.png?t=N7T8https://docs.opencv.org/4.5.4/d5/dae/tutorial_aruco_detection.html解压与创建的文件夹:

二. Cmake配置

过程同上。

特别注意:需要把OpenCV_DIR目录下的位置修改为opencv_build文件夹所在位置,CMAKE_INSTALL_PREFIX的位置应该可以更改,我这里选择了默认位置

包含重新生成与安装的过程(经历一分钟)。

安装的时候出错:

看了一下安装路径:

不存在Aruco文档,说明放到C盘不合适。

我改到了D盘,成功生成。

可以见到生成的aruco文档。

D. 开始项目的配置

一. 属性配置

包含目录

D:\opencv4.6\aruco\include;
D:\opencv4.6\aruco\include\aruco;
D:\opencv4.6\opencv\newbuild\install\include;
D:\opencv4.6\opencv\newbuild\install\include\opencv2;
​​​​​​​$(IncludePath)

库目录

链接器->输入->附加依赖项:

这个地方由于没有集成,所以要进行完整的lib配置

找到下面的这个地方,输入cmd,执行dir /b *.lib *>0.txt命令,在当前文件夹中生成0.txt,将其内容复制粘贴到附加依赖项之中,删除不是lib结尾项,同时加入aruco的lib。

二. 代码测试

#include <iostream>  
#include <opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>  
#include <opencv2/aruco/charuco.hpp>
#include "opencv2/imgproc.hpp"using namespace cv;
using namespace std;void maker_test(Mat image)
{cv::Ptr<cv::aruco::Dictionary> dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_4X4_100);cv::Ptr<cv::aruco::DetectorParameters> params = aruco::DetectorParameters::create();params->cornerRefinementMethod = cv::aruco::CORNER_REFINE_NONE;cv::Mat imageCopy;image.copyTo(imageCopy);std::vector<int> ids;std::vector<std::vector<cv::Point2f>> corners, rejected;cv::aruco::detectMarkers(image, dictionary, corners, ids, params);// if at least one marker detectedif (ids.size() > 0){cv::aruco::drawDetectedMarkers(imageCopy, corners, ids);cv::resize(imageCopy, imageCopy,Size(4096/6,2160/6));cv::imshow("test", imageCopy);cv::waitKey();}}int main(){Mat img = cv::imread("test.jpg", 1);maker_test(img);}

成功生成

中间的蓝色框为想要的id

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

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

相关文章

Materail Design 进阶(十一)——MaterialButton使用

距离上次写Material组件的文章已经过去了好多年&#x1f604;&#xff0c;最近在写Flutter又接触到了Material&#xff0c;已经升级了许多&#xff0c;这次就用新的组件来试试吧&#xff5e; Button组件大家都非常熟悉了&#xff0c;如果画一个带圆角&#xff0c;边框的按钮&a…

FFmpeg读取Assets资源文件

在Android开发中我们经常把原生资源文件放在assets目录下以供需要时读取&#xff0c;通过API提供的resources.assets.open(filename)/openFd(filenam)方法可以非常方便获得InputStream或FileDescriptor&#xff08;文件标识符&#xff09;&#xff0c;但是在使用FFmpeg读取Asse…

JavaScript系列——同步与异步

文章目录 概要同步代码&#xff1a;异步代码 JavaScript运行机制运行时概念栈&#xff08;stack&#xff09;堆队列消息的添加 异步场景网络请求 异步编程优化小结 概要 异步&#xff0c;按照字面理解&#xff0c;指的是两个或者两个以上的对象或事件不同时存在或者发生&#…

透明OLED屏的稳定性:从技术角度及应用案例解析

在显示技术日新月异的今天&#xff0c;透明OLED屏以其独特的透明特性和出色的显示效果&#xff0c;吸引了众多关注。然而&#xff0c;对于这种新型技术的稳定性&#xff0c;人们难免会有所疑虑。作为一名专注于OLED技术研发的工程师&#xff0c;尼伽小编将从专业角度出发&#…

十种编程语言的对比分析

在当今的软件开发领域&#xff0c;编程语言扮演着至关重要的角色。不同的编程语言各有其特点和适用场景&#xff0c;选择合适的编程语言能够提高开发效率和软件质量。本文将对十种常见的编程语言进行对比分析&#xff0c;帮助读者了解它们的优缺点和适用场景。 一、Python Pyt…

云化XR技术于农业领域中的表现

随着科技的不断发展和应用的深入&#xff0c;农业领域也在逐渐引入新技术来优化生产效率和成本、改进管理和监控等。云化XR&#xff08;CloudXR&#xff09;作为一种融合了云计算、虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;等技术的解决方案&am…

生信技能33 - gnomAD数据库hg19/hg38 VCF文件批量下载脚本

gnomAD数据库下载地址 gnomAD downloads gnomAD v2.1.1数据集包含来自125,748个外显子组和15,708个全基因组的数据,所有这些数据都映射到GRCh 37/hg 19和GRCh 38/hg 38 两个版本的参考序列。 gnomAD数据库hg19与hg39 VCF文件批量下载脚本 download.sh # 获取当前目录路径…

C++-异常处理

1、概念 异常时程序在执行期间产生的问题。C异常是指在程序运行时发生的特殊情况。比如string::at函数下标越界等。 异常提供了一种转移程序控制权的方式。 一旦程序出现异常没有经过处理&#xff0c;就会造成程序运行崩溃。 处理异常的方式有&#xff1a;抛出异常&#xff08;…

Python基础(十九、文件操作写入与追加)

文章目录 一、文件的写入&#xff08;使用 "w" 模式&#xff09;二、文件的追加&#xff08;使用 "a" 模式&#xff09;三、文件备份案例接之前的答案 在 Python 中&#xff0c;open() 是一个内置函数&#xff0c;用于打开文件并返回文件对象。它是处理文件…

助力实体店数字化升级,VR智慧门店打造线上逛店体验

近年来&#xff0c;传统实体店业绩增长过于缓慢&#xff0c;实体门店的销售疲态十分明显&#xff0c;甚至于部分城市已经出现大量线下实体店开始关门的现象&#xff0c;因此顺应实体零售数字化升级趋势已经刻不容缓。越来越多的实体门店开始意识到这个问题&#xff0c;并逐步开…

cad快速看图软件免费版(手机在线cad快速看图)

cad快速看图软件免费版(手机在线cad快速看图) 很多机械设计师日常工作过程中涉及到多种格式的cad图纸&#xff0c;cad图纸大多都需要cad设计软件才能打开&#xff0c;然而很多小伙伴并没有下载相应的cad设计软件&#xff0c;这种情况下如何进行cad快速看图呢&#xff1f; 今天…

一文弄懂vue中样式穿透v-deep

1. 前言 在vue3的世界里&#xff0c;有一个style标签的关键字v-deep&#xff0c;官网称之为样式穿透。那他究竟是什么原理呢&#xff1f;又是怎么工作的呢&#xff1f;让我们一起探究一下。 2. 准备工作 需要实现搭建一个vue3的环境&#xff0c;我这里使用的是vitevue3的架构…

使用JavaScript制作一个简单的天气应用

随着Web开发技术的不断发展&#xff0c;JavaScript已经成为前端开发中不可或缺的一部分。它不仅可以用于创建动态和交互式的用户界面&#xff0c;还可以用于处理各种复杂的任务&#xff0c;如数据验证、动态内容更新、实时通信等。以下是一个使用JavaScript来创建一个简单天气应…

【OJ】单链表刷题

力扣刷题 1. 反转链表&#xff08;206&#xff09;1.1 题目描述1.2 题目分析1.2.1 头插法1.2.2 箭头反转 1.3 题目代码1.3.1 头插入1.3.2 箭头反转 2.合并两个有序链表&#xff08;21&#xff09;2.1 题目描述2.2 题目分析2.3 题目代码 1. 反转链表&#xff08;206&#xff09;…

视频转音频软件哪个好? 11 个高效的视频转音频转换器分享

网络上拥有数百个值得观看和聆听的音乐视频。但要聆听喜爱的音乐&#xff0c;用户必须观看整个视频&#xff0c;即使只有音乐让他们兴奋。那么&#xff0c;如何从视频中提取音频呢&#xff1f;简单的答案是使用视频到音频转换器将视频转换为音频格式并将其保存在您的设备上以供…

gflags.exe 工具入门详解

gflags.exe 是 Windows 平台上的一个调试工具&#xff0c;它来自 Microsoft Debugging Tools for Windows 工具集。gflags&#xff08;全局标志&#xff09;主要用于设置和管理针对特定进程或系统的调试选项以及性能监视特性。这个工具可以帮助开发者对程序进行更深入的故障排查…

【读书】《白帽子讲web安全》个人笔记Ⅰ-1

目录 前言&#xff1a; 第1章 我的安全世界观 1.1 Web安全简史 1.1.1中国黑客简史 1.1.2黑客技术的发展历程 1.1.3web安全的兴起 1.2黑帽子&#xff0c;白帽子 1.3返璞归真&#xff0c;揭秘安全的本质 1.4破除迷信&#xff0c;没有银弹 1.5安全三要素 1.6如何实施安…

使用pymysql框架连接和查询MySQL数据库

使用pymysql框架连接和查询MySQL数据库步骤&#xff1a; 前提&#xff1a;安装并import pymysql模块 1、使用 pymysql.connect&#xff08;&#xff09;函数创建一个数据库连接对象 2、正确填写数据库配置信息&#xff0c;地址、端口、用户名、密码、数据库名称 3、创建游标…

微服务-sentinel-基本案例,持久化

sentinel 功能 限流 限流文档 直接拒绝&#xff1a;触发阀值直接抛弃。冷启动&#xff1a;在一段时间内针对突发流量缓慢增长处理数量。 3&#xff09;匀速器&#xff1a;请求以均匀的速度通过。 降级降级文档 1&#xff09;RT 统计时间内&#xff0c;大于预设请求数量&…

MySQL数据库的查询操作

MySQL单表查询 字段解析字段名字段类型雇员编号idint雇员姓名namevarchar(30)雇员性别sexenum雇用时期hire_datedate雇员职位postvarchar(50)职位描述job_descriptionvarchar(100)雇员薪水salarydouble(15,2)办公室officeint部门编号dep_idint #创表 CREATE TABLE company.em…