opencv4: Enable nvidia-optical-flow-sdk when building with cuda

This commit is contained in:
Michael Lingelbach 2020-03-20 21:42:12 -07:00
parent 41b012907d
commit dc1a15e7bd
2 changed files with 30 additions and 2 deletions

View File

@ -15,7 +15,7 @@
, enableContrib ? true
, enableCuda ? (config.cudaSupport or false) &&
stdenv.hostPlatform.isx86_64, cudatoolkit
stdenv.hostPlatform.isx86_64, cudatoolkit, nvidia-optical-flow-sdk
, enableUnfree ? false
, enableIpp ? false
@ -166,6 +166,7 @@ stdenv.mkDerivation {
# Also, work around https://github.com/NixOS/nixpkgs/issues/26304 with
# what appears to be some stray headers in dnn/misc/tensorflow
# in contrib when generating the Python bindings:
patches = lib.optional enableCuda ./cuda_opt_flow.patch;
postPatch = ''
sed -i '/Add these standard paths to the search paths for FIND_LIBRARY/,/^\s*$/{d}' CMakeLists.txt
sed -i -e 's|if len(decls) == 0:|if len(decls) == 0 or "opencv2/" not in hdr:|' ./modules/python/src2/gen2.py
@ -213,7 +214,7 @@ stdenv.mkDerivation {
# tesseract & leptonica.
++ lib.optionals enableTesseract [ tesseract leptonica ]
++ lib.optional enableTbb tbb
++ lib.optional enableCuda cudatoolkit
++ lib.optionals enableCuda [ cudatoolkit nvidia-optical-flow-sdk ]
++ lib.optionals stdenv.isDarwin [ bzip2 AVFoundation Cocoa VideoDecodeAcceleration ]
++ lib.optionals enableDocs [ doxygen graphviz-nox ];
@ -249,6 +250,7 @@ stdenv.mkDerivation {
"-DCUDA_FAST_MATH=ON"
"-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc"
"-DCUDA_NVCC_FLAGS=--expt-relaxed-constexpr"
"-DNVIDIA_OPTICAL_FLOW_1_0_HEADERS_PATH=${nvidia-optical-flow-sdk}"
] ++ lib.optionals stdenv.isDarwin [
"-DWITH_OPENCL=OFF"
"-DWITH_LAPACK=OFF"

View File

@ -0,0 +1,26 @@
diff --git a/opencv_contrib/cudaoptflow/CMakeLists.txt b/opencv_contrib/cudaoptflow/CMakeLists.txt
index e5b823ab4a..a728060d0b 100644
--- a/opencv_contrib/cudaoptflow/CMakeLists.txt
+++ b/opencv_contrib/cudaoptflow/CMakeLists.txt
@@ -11,18 +11,6 @@ ocv_define_module(cudaoptflow opencv_video opencv_optflow opencv_cudaarithm open
set(NVIDIA_OPTICAL_FLOW_1_0_HEADERS_COMMIT "79c6cee80a2df9a196f20afd6b598a9810964c32")
set(NVIDIA_OPTICAL_FLOW_1_0_HEADERS_MD5 "ca5acedee6cb45d0ec610a6732de5c15")
set(NVIDIA_OPTICAL_FLOW_1_0_HEADERS_PATH "${OpenCV_BINARY_DIR}/3rdparty/NVIDIAOpticalFlowSDK_1_0_Headers")
-ocv_download(FILENAME "${NVIDIA_OPTICAL_FLOW_1_0_HEADERS_COMMIT}.zip"
- HASH ${NVIDIA_OPTICAL_FLOW_1_0_HEADERS_MD5}
- URL
- "https://github.com/NVIDIA/NVIDIAOpticalFlowSDK/archive/"
- DESTINATION_DIR "${NVIDIA_OPTICAL_FLOW_1_0_HEADERS_PATH}"
- STATUS NVIDIA_OPTICAL_FLOW_1_0_HEADERS_DOWNLOAD_SUCCESS
- ID "NVIDIA_OPTICAL_FLOW"
- UNPACK RELATIVE_URL)
-if(NOT NVIDIA_OPTICAL_FLOW_1_0_HEADERS_DOWNLOAD_SUCCESS)
- message(STATUS "Failed to download NVIDIA_Optical_Flow_1_0 Headers")
-else()
- add_definitions(-DHAVE_NVIDIA_OPTFLOW=1)
- ocv_include_directories(SYSTEM "${NVIDIA_OPTICAL_FLOW_1_0_HEADERS_PATH}/NVIDIAOpticalFlowSDK-${NVIDIA_OPTICAL_FLOW_1_0_HEADERS_COMMIT}")
-endif()
\ No newline at end of file
+add_definitions(-DHAVE_NVIDIA_OPTFLOW=1)
+ocv_include_directories(SYSTEM "${NVIDIA_OPTICAL_FLOW_1_0_HEADERS_PATH}")