opencv.cmake 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. set(COMPRESSED_SUFFIX ".tgz")
  15. if(WIN32)
  16. if(NOT CMAKE_CL_64)
  17. set(OPENCV_FILENAME "opencv-win-x86-3.4.16")
  18. else()
  19. set(OPENCV_FILENAME "opencv-win-x64-3.4.16")
  20. endif()
  21. set(COMPRESSED_SUFFIX ".zip")
  22. elseif(APPLE)
  23. if(CURRENT_OSX_ARCH MATCHES "arm64")
  24. set(OPENCV_FILENAME "opencv-osx-arm64-3.4.16")
  25. else()
  26. set(OPENCV_FILENAME "opencv-osx-x86_64-3.4.16")
  27. endif()
  28. elseif(IOS)
  29. message(FATAL_ERROR "Not support cross compiling for IOS now!")
  30. # Linux
  31. else()
  32. if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
  33. set(OPENCV_FILENAME "opencv-linux-aarch64-3.4.14")
  34. endif()
  35. endif()
  36. if(NOT OPENCV_FILENAME)
  37. set(OPENCV_FILENAME "opencv-linux-x64-3.4.16")
  38. endif()
  39. set(OPENCV_INSTALL_DIR ${THIRD_PARTY_PATH}/install/)
  40. if(WIN32)
  41. if(NOT CMAKE_CL_64)
  42. set(OPENCV_URL_PREFIX "https://bj.bcebos.com/fastdeploy/third_libs")
  43. else()
  44. set(OPENCV_URL_PREFIX "https://bj.bcebos.com/paddle2onnx/libs")
  45. endif()
  46. else() # TODO: use ultra_infer/third_libs instead.
  47. set(OPENCV_URL_PREFIX "https://bj.bcebos.com/paddle2onnx/libs")
  48. endif()
  49. if(NOT OPENCV_URL)
  50. set(OPENCV_URL ${OPENCV_URL_PREFIX}/${OPENCV_FILENAME}${COMPRESSED_SUFFIX})
  51. endif()
  52. if(BUILD_ON_JETSON)
  53. if(EXISTS /usr/lib/aarch64-linux-gnu/cmake/opencv4/)
  54. set(OPENCV_DIRECTORY /usr/lib/aarch64-linux-gnu/cmake/opencv4/)
  55. endif()
  56. endif()
  57. if(OPENCV_DIRECTORY)
  58. message(STATUS "Use the opencv lib specified by user. The OpenCV path: ${OPENCV_DIRECTORY}")
  59. STRING(REGEX REPLACE "\\\\" "/" OPENCV_DIRECTORY ${OPENCV_DIRECTORY})
  60. # Win/Linux/Mac
  61. set(OpenCV_DIR ${OPENCV_DIRECTORY})
  62. find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR})
  63. include_directories(${OpenCV_INCLUDE_DIRS})
  64. list(APPEND DEPEND_LIBS ${OpenCV_LIBS})
  65. else()
  66. message(STATUS "Use the default OpenCV lib from: ${OPENCV_URL}")
  67. # Win/Linux/Mac
  68. download_and_decompress(${OPENCV_URL} ${CMAKE_CURRENT_BINARY_DIR}/${OPENCV_FILENAME}${COMPRESSED_SUFFIX} ${THIRD_PARTY_PATH}/install/)
  69. if(EXISTS ${THIRD_PARTY_PATH}/install/opencv)
  70. file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/opencv)
  71. endif()
  72. file(RENAME ${THIRD_PARTY_PATH}/install/${OPENCV_FILENAME}/ ${THIRD_PARTY_PATH}/install/opencv)
  73. set(OPENCV_FILENAME opencv)
  74. if(NOT OpenCV_DIR)
  75. set(OpenCV_DIR ${THIRD_PARTY_PATH}/install/${OPENCV_FILENAME})
  76. endif()
  77. if (WIN32)
  78. set(OpenCV_DIR ${OpenCV_DIR}/build)
  79. endif()
  80. find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR} NO_DEFAULT_PATH)
  81. include_directories(${OpenCV_INCLUDE_DIRS})
  82. list(APPEND DEPEND_LIBS opencv_core opencv_video opencv_highgui opencv_imgproc opencv_imgcodecs opencv_calib3d opencv_features2d opencv_flann)
  83. endif()