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 detected
	if (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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习】Python学习10-列表

目录 【Python学习】Python学习10-列表 前言创建语法访问列表中的值更新和删除列表元素操作列表列表截取Python列表函数&方法参考 文章所属专区 Python学习 前言 本章节主要说明Python的列表List。 创建语法 创建一个列表 通过方括号和逗号分割创建&#xff0c;列表数据…

一个大场景下无线通信仿真架构思路(对比omnet与训练靶场)

2020年分析过omnet的源码&#xff0c;读了整整一年&#xff0c;读完之后收获不小&#xff0c;但是也遗憾的发现这个东西只适合实验室做研究的人用于协议的研发与测试&#xff0c;并不适合大场景&#xff08;军事游戏等&#xff09;的应用&#xff0c;因为其固有架构更侧重于每个…

视频号小店和抖音小店相比,新手做哪个比较好?

我是电商珠珠 抖音小店在19年被抖音所发展&#xff0c;在这过程中&#xff0c;抖音小店通过自身的不断完善&#xff0c;从兴趣电商到全域兴趣电商模式&#xff0c;从直播电商到商城的出现&#xff0c;凭借着门槛低流量高的优势&#xff0c;让很多商家尝到了红利。 尤其是在20…

1042: 数列求和3 和 1057: 素数判定 和 1063: 最大公约与最小公倍

1042: 数列求和3 题目描述 求1-2/33/5-4/75/9-6/11...的前n项和&#xff0c;结果保留3位小数。 输入 输入正整数n(n>0)。 输出 输出一个实数&#xff0c;保留3位小数&#xff0c;单独占一行。 样例输入 5 样例输出 0.917 #include<stdio.h> int main(){in…

归并排序-排序算法

前言 如果一个数组的左右区间都有序&#xff0c;我们可以使用一种方法&#xff08;归并&#xff09;&#xff0c;使这个数组变得有序。 如下图&#xff1a; 过程也很简单&#xff0c;分别取左右区间中的最小元素&#xff0c;再把其中较小的元素放到临时数组中&#xff0c;例如…

JavaSE学习笔记 2023-12-28 --MySQL

MySQL 个人整理非商业用途&#xff0c;欢迎探讨与指正&#xff01;&#xff01; 文章目录 MySQL1.数据库介绍2.数据库的分类3.数据库中的常用术语4.数据库安装和配置5.MySQL的逻辑结构6.SQL语句7.DML7.1DQL7.1.1基本查询7.1.2过滤查询7.1.2.1条件运算符7.1.2.2逻辑运算符7.1.2.…

Spring 基于注解的AOP见解4

5.基于注解的AOP配置 5.1创建工程 5.1.1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…

【AI视野·今日NLP 自然语言处理论文速览 第六十七期】Mon, 1 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 1 Jan 2024 Totally 42 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Principled Gradient-based Markov Chain Monte Carlo for Text Generation Authors Li Du, Afra Amini, Lucas…

基于Springboot的计算机学院校友网(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的计算机学院校友网(有报告)。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring…

红队打靶练习:RICKDICULOUSLYEASY: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 gobuster dirsearch WEB get flag1 /robots.txt FTP get flag2 telenet登录 get flag3 get flag4 9090端口 get flag5 dirsearch ssh登录 Summer用户 get flag6 信息收集 get flag7 get fl…

目标检测数据集大全「包含VOC+COCO+YOLO三种格式+划分脚本+训练脚本」(持续原地更新)

一、作者介绍&#xff1a;五年算法开发经验、AI 算法经理、阿里云开发社区专家博主、稀土掘金人工智能内容评审委员会成员。擅长&#xff1a;检测、分割、理解、AIGC 等算法训练与部署。 二、数据集介绍&#xff1a; 质量高&#xff1a;高质量图片、高质量标注数据&#xff0c;…

Java中什么序列化?

在Java中&#xff0c;序列化是一种将对象转换为字节序列的机制&#xff0c;使得对象可以在网络上传输或存储到文件中&#xff0c;而后可以通过反序列化还原为对象。Java提供了java.io.Serializable接口&#xff0c;通过实现这个接口的类可以实现对象的序列化和反序列化。 序列…

众和策略:沪指跌0.91%险守2900点,半导体、金融等板块走低

8日早盘&#xff0c;两市股指低开低走&#xff0c;沪指一度失守2900点&#xff0c;深成指、创业板指跌约1%&#xff0c;科创50指数创前史新低。 到午间收盘&#xff0c;沪指跌0.91%报2902.4点&#xff0c;深成指跌1.17%&#xff0c;创业板指跌0.99%&#xff0c;科创50指数跌超…

唠一唠Java线程池

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊Java线程池&#xff0c;如果没有线程池&#xff0c;每个线程都需要手动创建和销毁线程&#xff0c;那将是多么低效和耗资源啊&#xff01; 线程池的核心作用就是复用已创建的线程&#xff0c;减少…

使用电脑多年的你不可不知:移动机械硬盘的正确使用姿势

前言 随着科技的发展&#xff0c;小伙伴手边或多或少都有移动硬盘这个存储设备。上班族用来存储资料&#xff0c;家人用来存放回忆。但移动机械硬盘的使用过程中是有注意事项的&#xff0c;你知道多少移动机械硬盘的使用注意事项呢&#xff1f; 今天小白就跟各位小伙伴来唠唠…

好用的设备租赁管理软件有哪些?

“我们公司是做设备租赁的&#xff0c;想找一款适合设备租赁的库存管理软件&#xff0c;最好有库存管理&#xff0c;客户信息&#xff0c;设备外调管理&#xff0c;租赁天数管理&#xff0c;设备的借出与归还信息管理与查询。” 总结一下—— 库存管理客户信息管理设备租赁管…

softmax详解

在神经网络中&#xff0c;Softmax 是一个用于多类别分类的激活函数。给定一个包含原始分数&#xff08;未经处理的模型输出&#xff09;的向量&#xff0c;Softmax 将这些分数转化为表示概率分布的向量。具体而言&#xff0c;对于给定的原始分数向量 ( z )&#xff0c;Softmax …

Transformers 2023年度回顾 :从BERT到GPT4

人工智能已成为近年来最受关注的话题之一&#xff0c;由于神经网络的发展&#xff0c;曾经被认为纯粹是科幻小说中的服务现在正在成为现实。从对话代理到媒体内容生成&#xff0c;人工智能正在改变我们与技术互动的方式。特别是机器学习 (ML) 模型在自然语言处理 (NLP) 领域取得…

《网络是怎样连接的》2.5节图表(自用)

图5.1&#xff1a;ip包结构 图5.2&#xff1a;ip网络包的传输方式 1.以太网的部分也可以替换成其他的东西&#xff0c;例如无线局域网、ADSL、FTTH等&#xff0c;它们都可以替代以太网的角色帮助IP协议来传输网络包 2.根据ARP协议&#xff0c;客户端可以根据ip地址得到下一个路…

vsCode输出控制台中文乱码解决

在tasks.json里的args中添加 "-fexec-charsetGBK", // 处理mingw中文编码问题 "-finput-charsetUTF-8",// 处理mingw中文编码问题