Ubuntu24.04下编译opencv4.5.0时ADE模块下载问题

OpenCV 的 ADE 模块(Adaptive Distance Estimation)是一个用于进行自适应距离估计的工具,主要用于图像和视频分析中的深度感知任务。它可以帮助从图像中估算物体的距离,并对不同深度进行自适应处理,从而提升计算机视觉系统的准确性和鲁棒性。ADE 在多视角几何和深度学习应用中具有重要作用,用于提高三维重建和物体检测的精度。

Ubuntu24.04下编译opencv教程参考:

Ubuntu24.04+cmake+opencv源码编译配置_ubuntu opencv cmake-CSDN博客

报错内容:

CMake Error at modules/gapi/cmake/DownloadADE.cmake:23 (add_library):
  No SOURCES given to target: ade
Call Stack (most recent call first):
  modules/gapi/cmake/init.cmake:19 (include)
  cmake/OpenCVModule.cmake:312 (include)
  cmake/OpenCVModule.cmake:375 (_add_modules_1)
  modules/CMakeLists.txt:7 (ocv_glob_modules)

-- ADE: Download: v0.1.1f.zip
CMake Error at cmake/OpenCVDownload.cmake:162 (file):
  file DOWNLOAD cannot open file for write.
Call Stack (most recent call first):
  modules/gapi/cmake/DownloadADE.cmake:7 (ocv_download)
  modules/gapi/cmake/init.cmake:19 (include)
  cmake/OpenCVModule.cmake:312 (include)
  cmake/OpenCVModule.cmake:375 (_add_modules_1)
  modules/CMakeLists.txt:7 (ocv_glob_modules) 

找不到下载的目标或下载失败,

找到opencv目录下的modules/gapi/cmake/DownloadADE.cmake文件:

set(ade_src_dir "${OpenCV_BINARY_DIR}/3rdparty/ade") # ade库将被下载在此位置
set(ade_filename "v0.1.1f.zip") # 下载的文件名
set(ade_subdir "ade-0.1.1f") # ade库解压后所在的子目录名称(包含ade 库的源码)
set(ade_md5 "b624b995ec9c439cbc2e9e6ee940d3a2") # ade 库压缩文件的 MD5 校验和

# 调用下载函数下载ade,其中URL为下载地址
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()

set(ADE_root "${ade_src_dir}/${ade_subdir}/sources/ade")
file(GLOB_RECURSE ADE_sources "${ADE_root}/source/*.cpp")
file(GLOB_RECURSE ADE_include "${ADE_root}/include/ade/*.hpp")
add_library(ade STATIC ${ADE_include} ${ADE_sources})
target_include_directories(ade PUBLIC $<BUILD_INTERFACE:${ADE_root}/include>)
set_target_properties(ade PROPERTIES POSITION_INDEPENDENT_CODE True)

if(NOT BUILD_SHARED_LIBS)
  ocv_install_target(ade EXPORT OpenCVModules ARCHIVE DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} COMPONENT dev)
endif()

ocv_install_3rdparty_licenses(ade "${ade_src_dir}/${ade_subdir}/LICENSE")

复制代码中的下载地址,查看网页提示Not Found,下载地址已经失效了。

解决该问题有两个选择:

  1. 自行下载文件放入指定目录下,并修改DownloadADE.cmake文件中的文件名、MD5值
  2. 修改DownloadADE.cmake文件中的下载地址等各项内容

更建议自行下载,虽然修改配置文件体现出较好的可移植性,但是网络访问不稳定依然会导致下载失败,自行下载更加实用。

各个版本的ADE模块文件一般都可在https://github.com/opencv/ade/ 下找到,但是直接点击最深层的下载地址跳转(如:https://github.com/opencv/ade/releases/tag)有可能会出现Not Found的情况,实际上并不是地址已失效,只是访问失败了,这时可尝试一层一层慢慢找。

GitHub - opencv/ade   Releases在右侧

解决方法1:自行下载

1、直接到可用的地址: https://github.com/opencv/ade/releases/tag 下载压缩包(.tar.gz和.zip都可),无需解压直接将压缩包放置在opencv目录下的/.cache/ade中,

2、打开终端命令行,使用命令查询压缩包的MD5值(注意将<>内容修改成自己的下载路径、文件名):

md5sum <path/to/file/.cache/ade/filename>

 3、修改下载的压缩包文件名,在文件名前加上MD5值与"-"符号,例如将ade-0.1.1f.tar.gz改为07749ec1fb889049bd81518925efd224-ade-0.1.1f.tar.gz(可能需要su权限)

4、修改DownloadADE.cmake中的文件名、目录、MD5值,保存

再次cmake编译便不会报错

解决方法2:修改DownloadADE.cmake

将下载地址修改为可用的地址:

https://github.com/opencv/ade/releases/tag

同解决方法1一样修改DownloadADE.cmake文件中其他部分内容,示例:

set(ade_src_dir "${OpenCV_BINARY_DIR}/3rdparty/ade")
set(ade_filename "ade-0.1.1f.tar.gz") #按照下载内容修改文件名
set(ade_subdir "ade-0.1.1f")
set(ade_md5 "07749ec1fb889049bd81518925efd224") #修改为新下载的压缩包的MD5值
ocv_download(FILENAME ${ade_filename}
             HASH ${ade_md5}
             URL
               "${OPENCV_ADE_URL}"
               "$ENV{OPENCV_ADE_URL}"
               "https://github.com/opencv/ade/releases/tag/"
             DESTINATION_DIR ${ade_src_dir}
             ID ADE
             STATUS res
             UNPACK RELATIVE_URL)

if (NOT res)
    return()
endif()

set(ADE_root "${ade_src_dir}/${ade_subdir}/sources/ade")
file(GLOB_RECURSE ADE_sources "${ADE_root}/source/*.cpp")
file(GLOB_RECURSE ADE_include "${ADE_root}/include/ade/*.hpp")

add_library(ade STATIC ${ADE_include} ${ADE_sources})
target_include_directories(ade PUBLIC $<BUILD_INTERFACE:${ADE_root}/include>)
set_target_properties(ade PROPERTIES POSITION_INDEPENDENT_CODE True)

if(NOT BUILD_SHARED_LIBS)
  ocv_install_target(ade EXPORT OpenCVModules ARCHIVE DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} COMPONENT dev)
endif()

ocv_install_3rdparty_licenses(ade "${ade_src_dir}/${ade_subdir}/LICENSE")

保存文件后再次cmake编译便不会报错

后续在make过程中可能会出现如下报错:

按照提示找到构建文件下的build/3rdparty/ade/ade-0.1.1f/sources/ade/include/ade/typed_graph.hpp,添加头文件#include <cstdint>即可

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值