日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux c url下载文件,OpenCV教程之使用cmake生成MakeFile时下载文件

發(fā)布時(shí)間:2024/9/27 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux c url下载文件,OpenCV教程之使用cmake生成MakeFile时下载文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在編譯OpenCV以及其附加模塊時(shí),有時(shí)會(huì)需要一些第三方的庫(kù),如果本地沒(méi)有,會(huì)自動(dòng)下載,下載地址一般為GitHub,結(jié)果當(dāng)然就是卡死在那里,根本無(wú)法下載,下面教大家如何解決這種問(wèn)題。

問(wèn)題重現(xiàn)

比如我在使用cmake配置的過(guò)程中出現(xiàn)以下情況:

Call Stack (most recent call first):

/home/ryan/build/opencv_contrib-master/modules/dnn/cmake/download_protobuf.cmake:23 (ocv_download)

/home/ryan/build/opencv_contrib-master/modules/dnn/cmake/download_protobuf.cmake:51 (ocv_protobuf_download)

/home/ryan/build/opencv_contrib-master/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:30 (include)

/home/ryan/build/opencv_contrib-master/modules/dnn/CMakeLists.txt:38 (include)

-- Downloading v3.1.0/protobuf-cpp-3.1.0.tar.gz...

解決思路

從上面的日志中可以得到以下信息:

需要下載protobuf-cpp-3.1.0.tar.gz這個(gè)文件

最先報(bào)錯(cuò)的是download_protobuf.cmake這個(gè)文件

一般情況下,最先報(bào)錯(cuò)的那個(gè)文件能獲得一些與錯(cuò)誤相關(guān)的信息,于是,我們打開(kāi)這個(gè)文件,如下

set(PROTOBUF_CPP_NAME "libprotobuf")

set(PROTOBUF_CPP_DOWNLOAD_HASH "bd5e3eed635a8d32e2b99658633815ef")

set(PROTOBUF_CPP_PATH "${CMAKE_CURRENT_BINARY_DIR}/3rdparty/protobuf/sources") # /protobuf-3.1.0 subdirectory

set(OPENCV_PROTOBUF_CPP_DOWNLOAD_URL ${OPENCV_PROTOBUF_URL};$ENV{OPENCV_PROTOBUF_URL};https://github.com/google/protobuf/releases/download/)

function(ocv_protobuf_download file ID)

if(DEFINED ${ID}_DOWNLOADED_HASH

AND ${ID}_DOWNLOADED_HASH STREQUAL ${ID}_DOWNLOAD_HASH

AND EXISTS ${${ID}_PATH})

# Files have been downloaded and checked by the previous CMake run

return()

else()

if(EXISTS ${${ID}_PATH})

message(STATUS "${${ID}_NAME}: Removing previous unpacked files: ${${ID}_PATH}")

file(REMOVE_RECURSE ${${ID}_PATH})

endif()

endif()

unset(${ID}_DOWNLOADED_HASH CACHE)

file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.download)

file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/.download/.gitignore" "*\n")

ocv_download(PACKAGE ${file}

HASH ${${ID}_DOWNLOAD_HASH}

URL ${OPENCV_${ID}_DOWNLOAD_URL}

DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.download)

set(${ID}_ARCHIVE "${DOWNLOAD_PACKAGE_LOCATION}")

ocv_assert(EXISTS "${${ID}_ARCHIVE}")

ocv_assert(NOT EXISTS "${${ID}_PATH}")

file(MAKE_DIRECTORY ${${ID}_PATH})

ocv_assert(EXISTS "${${ID}_PATH}")

file(WRITE "${${ID}_PATH}/.gitignore" "*\n")

message(STATUS "${${ID}_NAME}: Unpacking ${file} to ${${ID}_PATH}...")

execute_process(COMMAND ${CMAKE_COMMAND} -E tar xz "${${ID}_ARCHIVE}"

WORKING_DIRECTORY "${${ID}_PATH}"

RESULT_VARIABLE __result)

if(NOT __result EQUAL 0)

message(FATAL_ERROR "${${ID}_NAME}: Failed to unpack ${ID} archive from ${${ID}_ARCHIVE} to ${${ID}_PATH} with error ${__result}")

endif()

ocv_assert(EXISTS "${${ID}_PATH}")

set(${ID}_DOWNLOADED_HASH "${${ID}_DOWNLOAD_HASH}" CACHE INTERNAL "${ID} hash")

#message(STATUS "${${ID}_NAME}: Successfully downloaded")

endfunction()

ocv_protobuf_download(v3.1.0/protobuf-cpp-3.1.0.tar.gz PROTOBUF_CPP)

可以看出,他需要libprotobuf這個(gè)庫(kù),并且需要下載到 ${CMAKE_CURRENT_BINARY_DIR}/3rdparty/protobuf/sources 目錄下,而下載地址就是 https://github.com/google/protobuf/releases/download/ ,于是我們只要手動(dòng)下載,然后把文件放到這個(gè)目錄下即可。

Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安裝? http://www.linuxidc.com/Linux/2016-07/132860.htm

Ubuntu 16.04下TensorFlow+Caffe+OpenCV3.1+Theano部署? http://www.linuxidc.com/Linux/2017-01/139503.htm

OpenCV的詳細(xì)介紹:請(qǐng)點(diǎn)這里

OpenCV的下載地址:請(qǐng)點(diǎn)這里

總結(jié)

以上是生活随笔為你收集整理的linux c url下载文件,OpenCV教程之使用cmake生成MakeFile时下载文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。