机器环境无法访问GitHub情况下linux安装OpenCV执行cmake无法下载ADE文件v0.1.1f.zip

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython

一、引言

在CSDN的博文《构建VisualStudio2019+OpenCV4.3的C++ windows编译环境》中,老猿介绍了opencv版本的下载方法的方法,该方法下载OpenCV的代码不要上GitHub,国内可以直接访问,比较方便。

在linux安装OpenCV与上面博文不同的是版本选择必须选择linux版本,如图:
在这里插入图片描述

二、执行cmake时报ADE下载失败

opencv安装报下载后,进行文件解压,解压的opencv源码老猿机器上存放在目录/home/penCV/OpenCV430下,在其下建立build子目录后,进入该子目录执行cmake指令,在执行指令
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv430 ..
时,虽然最终成功了,但执行过程中有如下信息:

-- ADE: Download: v0.1.1f.zip
-- Try 1 failed
-- 
=======================================================================
  Couldn't connect to server from the Internet.
  Perhaps direct connections are not allowed in the current network.
  To use proxy please check/specify these environment variables:
  - http_proxy/https_proxy
  - and/or HTTP_PROXY/HTTPS_PROXY
=======================================================================

CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
  ADE: Download failed: 7;"Couldn't connect to server"

  For details please refer to the download log file:

  /home/openCV/OpenCV430/build/CMakeDownloadLog.txt

可见是ADE: Download失败了。ADE(Automatic Differentiation Engine)是OpenCV中的一个模块,用于自动计算图像处理算法的导数。它可以根据输入和输出之间的关系,自动计算算法的梯度,从而实现自动微分。在OpenCV的编译过程中,如果使用了gapi模块,会自动下载并编译ADE,以支持自动微分功能。

三、问题原因分析

根据报错信息,打开CMakeDownloadLog.txt文件,看到其内容如下:

#use_cache "/home/openCV/OpenCV430/.cache"
#do_unpack "v0.1.1f.zip" "b624b995ec9c439cbc2e9e6ee940d3a2" "https://github.com/opencv/ade/archive/v0.1.1f.zip" "/home/openCV/OpenCV430/build/3rdparty/ade"
#cmake_download "/home/openCV/OpenCV430/.cache/ade/b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip" "https://github.com/opencv/ade/archive/v0.1.1f.zip"
#try 1

从中可以看到cmake_download执行失败,这个指令的作用是下载ADE文件v0.1.1f.zip。具体来说,它会将第2个参数指定的URL链接的文件下载到第1个参数指定的本地路径中,其中“b624b995ec9c439cbc2e9e6ee940d3a2”为用于验证文件完整性的哈希值。当然不同OpenCV版本不能把这个文件路径、文件名和hash值会不同,大家比照本文的案例,从CMakeDownloadLog.txt文件获取得完整的路径和文件名。

经确认上述失败是因为在机器网络环境无法访问GitHub,导致无法下载https://github.com/opencv/ade/archive/v0.1.1f.zip文件。如果网络没有限制,则不存在此问题。

四、问题解决

4.1、手工下载相关文件

为了解决此ADE下载问题,老猿找了网上的多个资料,最终确认在确认url的情况下可以通过《GitHub 文件加速》网站下载对应内容,通过该完整输入https://github.com/opencv/ade/archive/v0.1.1f.zip(不同版本文件名不同)点击下载就可以下载到该文件。如图:

在这里插入图片描述

4.2、查找cmake与本下载相关的配置

但是文件下载后无法直接使用,用为cmake的配置没有修改,会导致cmake执行时还是按原来的模式执行,因此需要修改cmake的配置文件来确保无需下载该文件,并能利用本地文件完成相关工作。

为了查找这个文件,大家可以在OpenCV的安装目录下(含子目录)查找所有包含有“v0.1.1f.zip”文本的文件,可以用find或grep指令查找,老猿多了个懒,直接在vscode打开/home/OpenCV/OpenCV430文件夹,利用vscode左侧的查找按钮查找内容,如图:
在这里插入图片描述
可以看到这个文件名在两个文件中出现过,一个是CMakeDownloadLog.txt日志文件中,一个是/home/openCV/OpenCV430/modules/gapi/cmake/DownloadADE.cmake文件中,显然后者才是我们要找的文件。

双击上图左下部蓝框标记的查找到的文件内容,vscode自动打开文件并显示相关搜索到的内容,如图:
在这里插入图片描述
从图中可以看出,/home/openCV/OpenCV430/modules/gapi/cmake/DownloadADE.cmake文件中使用ocv_download去GitHub上执行了下载文件"v0.1.1f.zip"的操作,并在下载后进行了文件解压。

具体实现是用指令来执行的:

ocv_download(FILENAME ${ade_filename}
             HASH ${ade_md5}
             URL
               "${OPENCV_ADE_URL}"
               "$ENV{OPENCV_ADE_URL}"
               "https://github.com/opencv/ade/archive/"
             DESTINATION_DIR ${ade_src_dir}
             ID ADE
             STATUS res
             UNPACK RELATIVE_URL)

ocv_download是一个CMake命令,用于下载OpenCV的附加模块。ocv_download有多个参数:

  • FILENAME a d e f i l e n a m e :指定要下载的文件的名称。 {ade_filename}:指定要下载的文件的名称。 adefilename:指定要下载的文件的名称。{ade_filename}是一个变量,它包含了文件的名称
  • HASH a d e m d 5 :指定文件的哈希值。 {ade_md5}:指定文件的哈希值。 ademd5:指定文件的哈希值。{ade_md5}是一个变量,它包含了文件的MD5哈希值,用于验证文件内容的完整性
  • URL “ O P E N C V A D E U R L " " {OPENCV_ADE_URL}" " OPENCVADEURL""ENV{OPENCV_ADE_URL}” “https://github.com/opencv/ade/archive/”:指定文件的下载链接。这个参数可以有多个值,每个值都是一个下载链接。 O P E N C V A D E U R L 和 {OPENCV_ADE_URL}和 OPENCVADEURLENV{OPENCV_ADE_URL}都是变量,它们包含了下载链接的值
  • DESTINATION_DIR a d e s r c d i r :指定文件的目标目录。 {ade_src_dir}:指定文件的目标目录。 adesrcdir:指定文件的目标目录。{ade_src_dir}是一个变量,它包含了目标目录的路径
  • ID ADE:指定下载任务的ID。ADE是一个标识符,用于唯一标识这个下载任务
  • STATUS res:指定下载任务的状态变量。${res}是一个变量,它用于存储下载任务的状态,为TRUE表示下载成功,FALSE下载失败
  • UNPACK RELATIVE_URL:指定是否解压下载的文件。RELATIVE_URL是一个标识符,用于指示是否解压文件。

4.3、修改cmake配置

老猿下载的源文件放在了/home/openCV目录下,我们要做的是将cmake从下载文件改为从本地路径获取该文件,为此需要修改cmake配置文件DownloadADE.cmake文件,在开始修改前请先做个文件备份。

具体修改内容是将原文件中如下这段内容:

ocv_download(FILENAME ${ade_filename}
             HASH ${ade_md5}
             URL
               "${OPENCV_ADE_URL}"
               "$ENV{OPENCV_ADE_URL}"
               "https://github.com/opencv/ade/archive/"
             DESTINATION_DIR ${ade_src_dir}
             ID ADE
             STATUS res
             UNPACK RELATIVE_URL)

if (NOT res)
    return()
endif()

修改为:

get_filename_component(OpenCV_INSTALL_DIR "${OpenCV_BINARY_DIR}/../.." ABSOLUTE)

set(ADE_src_filename "${OpenCV_INSTALL_DIR}/ade-0.1.1f.zip")
set(ADE_dest_filename "${ade_src_dir}/ade-0.1.1f.zip")
execute_process(COMMAND mkdir ${ade_src_dir})

file(COPY ${ADE_src_filename} DESTINATION ${ade_src_dir})
execute_process(COMMAND unzip ${ADE_dest_filename}  WORKING_DIRECTORY ${ade_src_dir})

上述替换的指令是建立对应ade的目录,将下载的压缩文件拷贝到该目录并解压。注意OpenCV版本不同,以及下载文件存放路径不同的话,对应配置需要进行相应调整。

4.4、清除build目录的内容

进入build目录,执行rm -r *删除build目录下的所有文件和目录,以便重新执行cmake操作。

4.5、重新执行cmake

经过以上调整,可以重新在build目录下执行:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv430 ..
就可以顺利执行了。

五、小结

本文介绍了在linux机器网络环境无法直接访问GitHub的情况下,怎么绕开GitHub下载OpenCV安装源文件包,以及opencv包构建过程中,cmake无法访问GitHub获取ADE组件的解决办法,经过这些调整,可以将OpenCV源代码下载后顺利执行cmake以生成makefile文件,为后续执行代码完整构建打下了基础。
不过离真正的完整构建还需要有段距离,我们将在后续博文中继续介绍。

写博不易,敬请支持

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

更多关于统信操作系统及opencv的介绍的内容请参考专栏《国产信创之光》的其他文章。

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░

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

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

相关文章

记edusrc一处信息泄露登录统一平台

目录 前言 测试思路 本文由掌控安全学院 - sbhglqy 投稿 前言 我们都知道像大学之类的各种平台的登录账号基本上是学号,初始登录密码基本上是学生身份证的后6位再拼接上一些带有学校缩写的英文字母。所以我们在找漏洞的时候可以换一种思路,先通过去找…

辅助工具

本章将会通过以下几个角度,简要介绍几款渗透测试的辅助工具。 ● 工具的功能; ● 如果这款工具没有被Kali Linux 收录,本文也会介绍其安装过程; ● 应用案例。 稍后介绍的部分工具确实没有被 Kali Linux 收录。要使用这些软件…

ApiPost插件⭐️与IDEA的搭配使用,通过引入插件直接在项目里一键开测

小伙伴们大家好,用接口测试工具有一段时间了,最近发现该工具有提供插件直接可以在项目里测试接口,并且页面布局不输应用 目录 一、ApiPost插件介绍 二、安装插件 一、ApiPost插件介绍 Apipost 是一个用于测试和调试 API 接口的 IDEA 插件…

Ubuntu fcitx Install

ubuntu经常出现键盘失灵的问题 查询资料得知应该是Ibus框架的问题 于是需要安装fcitx框架和搜狗拼音 sudo apt update sudo apt install fcitx 设置fcitx开机自启动(建议) sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/ 然后…

Github项目推荐:KaTeX

项目地址 GitHub - KaTeX/KaTeX: Fast math typesetting for the web. 项目描述 这是一个渲染公式的JavaScript库。有时候可能网页中需要写一些公式,但html本身并没有提供相应的标签。这个时候这个库就能派上用场了。 项目截图

常见HTTP 500错误发生原因及解决办法剖析

​  对于网站运营者来说,提到500内部服务器错误并不陌生。互联网行业对它的称呼有好几种,如“500内部服务器错误”、“HTTP 500 - 内部服务器错误”、“临时错误 (500)”、“内部服务器错误”。尽管叫法不同,但根本问题是相同的。 目前&…

mac下jd-gui提示没有找到合适的jdk版本

mac下jd-gui提示jdk有问题 背景解决看一下是不是真有问题了方法一:修改启动脚本方法二:设置launchd环境变量 扩展动态切jdk脚本(.bash_profile) 背景 配置了动态jdk后,再次使用JD-GUI提示没有找到合适的jdk版本。 解决 看一下是不是真有问题…

java设计模式学习之【备忘录模式】

文章目录 引言备忘录模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用备忘录示例代码地址 引言 想象一下,你正在编辑一篇重要的文档,突然你意识到最近的一些更改实际上破坏了文档的结构。幸运的是,你的文本编辑器允许你撤…

Kubernetes快速实战与核心原理剖析

K8S 概览 K8S 是什么 K8S 官网文档:https://kubernetes.io/zh/docs/home/ K8S 是 Kubernetes 的全称,源于希腊语,意为“舵手”或“飞行员”。Kubernetes 是用于自动部署、扩缩和管理容器化应用程序的开源系统。 Kubernetes 源自 Google 15 年…

Ubuntu18.04安装GTSAM库并验证GTSAM是否安装成功(亲测可用)

在SLAM(Simultaneous Localization and Mapping)和SFM(Structure from Motion)这些复杂的估计问题中,因子图算法以其高效和灵活性而脱颖而出,成为图模型领域的核心技术。GTSAM(Georgia Tech Smo…

【算法刷题】Day26

文章目录 1. 买卖股票的最佳时机含冷冻期题干:算法原理:1. 状态表示:2. 状态转移方程3. 初始化4. 填表顺序5. 返回值 代码: 2. 替换所有的问号题干:算法原理:代码: 1. 买卖股票的最佳时机含冷冻…

从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革

作者:黄晓萌(学仁) 背景 Job 表示短周期的作业,定时 Job 表示按照预定的时间运行Job,或者按照某一频率周期性的运行 Job。比如: 许多传统企业使用 Linux 自带的 crontab 来做定时任务的方案,该方案非常简单&#xff…

laravel api资源的问题记录

resource 转换层 可以帮助我们转换一些字段的结果,类似前端的filter。 可以使用比如对象或者模型的形式来处理,但使用sql查询会导致n1的问题。如图: 层次嵌套很多,而且很深,这样虽然开发方便了,但是维护就…

Zblog主题模板:ZblogitseanPage博客主题模板

zblog主题模板:ZblogitseanPage博客主题模板 ZblogitseanPage博客主题模板主要是以文字内容为主导,将页面的设计杂乱的图片和元素进行最小化或者去除,从而使整个页面更加简洁、清晰,突出信息的呈现。 下面介绍一下zblog主题模板:Z…

【力扣】20.有效的括号

家人们,看这排序,一看就很简单,对吧?不对,我觉得还挺不是很容易的,哈哈哈。 题解: 在看题目的时候,我一开始的解题思路就挺复杂的。题目说了”左括号必须以正确的顺序闭合“&#x…

如何在简历中解释就业空白

您的工作经历有空缺吗?你不是一个人。有很多合理的理由可以解释为什么你需要休息一下。更重要的是,在一份真实正确的简历中,这些问题是无法避免的。直接解释就业差距总是更好,而且有很多因素需要考虑。你未来的老板想要了解工作轨…

【数据结构二】手撕顺序表与ArrayList源码详解

目录 顺序表与ArrayList 1. 手撕顺序表 2.ArrayList的使用 3.ArrayList的源码分析(扩容机制) 4.力扣题练习 顺序表与ArrayList 线性表是在逻辑上具备线性结构的一种有序序列,包括顺序表和链表。其中顺序表的物理地址也连续,一…

01_软件测试

01_软件测试 学习目标 1、能复述软件测试的定义 2、能说出7种测试分类的区别 3、能说出质量模型的重点5项 4、能说出测试流程的6个步骤 5、能说出测试模板8个要素 认识软件及测试 什么是软件 软件:控制计算机硬件工作的工具 软件的基本组成 软件生产过程 什么是软…

打地鼠游戏来了

主要利用js鼠标点击事件和window.setInterval()回调函数来进行实现的. 源码获取方式:链接:https://pan.baidu.com/s/1eW9qvX3zFH9qlH82-I4yOA 提取码:1233

配置代理解决跨域(CORS)问题

一、跨域 ? 我们在完成前后端分离项目时(VueSpringBoot),有很多人会遇到跨域问题(CORS)。 跨域(Cross-Origin Resource Sharing,CORS)是浏览器的一项安全功能&#xff…