Skip to content

Commit 0b8aecd

Browse files
committed
Merge pull request #2824 from tomoaki0705:fixBuildCudaOptFlow
2 parents d733a80 + 6e52be3 commit 0b8aecd

File tree

3 files changed

+39
-22
lines changed

3 files changed

+39
-22
lines changed

modules/cudaoptflow/CMakeLists.txt

+18-16
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,23 @@ ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 /wd4324 /wd4512 -Wundef -Wmissing-d
88

99
ocv_define_module(cudaoptflow opencv_video opencv_optflow opencv_cudaarithm opencv_cudawarping opencv_cudaimgproc OPTIONAL opencv_cudalegacy WRAP python)
1010

11-
set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT "edb50da3cf849840d680249aa6dbef248ebce2ca")
12-
set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_MD5 "a73cd48b18dcc0cc8933b30796074191")
13-
set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_PATH "${OpenCV_BINARY_DIR}/3rdparty/NVIDIAOpticalFlowSDK_2_0_Headers")
14-
ocv_download(FILENAME "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT}.zip"
15-
HASH ${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_MD5}
16-
URL
17-
"https://github.com/NVIDIA/NVIDIAOpticalFlowSDK/archive/"
18-
DESTINATION_DIR "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_PATH}"
19-
STATUS NVIDIA_OPTICAL_FLOW_2_0_HEADERS_DOWNLOAD_SUCCESS
20-
ID "NVIDIA_OPTICAL_FLOW"
21-
UNPACK RELATIVE_URL)
11+
if(NOT CUDA_VERSION VERSION_LESS "10.0")
12+
set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT "edb50da3cf849840d680249aa6dbef248ebce2ca")
13+
set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_MD5 "a73cd48b18dcc0cc8933b30796074191")
14+
set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_PATH "${OpenCV_BINARY_DIR}/3rdparty/NVIDIAOpticalFlowSDK_2_0_Headers")
15+
ocv_download(FILENAME "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT}.zip"
16+
HASH ${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_MD5}
17+
URL "https://github.com/NVIDIA/NVIDIAOpticalFlowSDK/archive/"
18+
DESTINATION_DIR "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_PATH}"
19+
STATUS NVIDIA_OPTICAL_FLOW_2_0_HEADERS_DOWNLOAD_SUCCESS
20+
ID "NVIDIA_OPTICAL_FLOW"
21+
UNPACK RELATIVE_URL)
2222

23-
if(NOT NVIDIA_OPTICAL_FLOW_2_0_HEADERS_DOWNLOAD_SUCCESS)
24-
message(STATUS "Failed to download NVIDIA_Optical_Flow_2_0 Headers")
25-
else()
26-
add_definitions(-DHAVE_NVIDIA_OPTFLOW=1)
27-
ocv_include_directories(SYSTEM "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_PATH}/NVIDIAOpticalFlowSDK-${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT}")
23+
if(NOT NVIDIA_OPTICAL_FLOW_2_0_HEADERS_DOWNLOAD_SUCCESS)
24+
message(STATUS "Failed to download NVIDIA_Optical_Flow_2_0 Headers")
25+
else()
26+
message(STATUS "Building with NVIDIA Optical Flow API 2.0")
27+
add_definitions(-DHAVE_NVIDIA_OPTFLOW=2)
28+
ocv_include_directories(SYSTEM "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_PATH}/NVIDIAOpticalFlowSDK-${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT}")
29+
endif()
2830
endif()

modules/cudaoptflow/src/cuda/nvidiaOpticalFlow.cu

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ typedef signed int int32_t;
2222
#define SMEM_COLS ((BLOCKDIM_X)/2)
2323
#define SMEM_ROWS ((BLOCKDIM_Y)/2)
2424

25+
#ifdef HAVE_NVIDIA_OPTFLOW
2526
namespace cv { namespace cuda { namespace device { namespace optflow_nvidia
2627
{
2728
static const char *_cudaGetErrorEnum(cudaError_t error) { return cudaGetErrorName(error); }
@@ -95,5 +96,6 @@ void FlowUpsample(void* srcDevPtr, uint32_t nSrcWidth, uint32_t nSrcPitch, uint3
9596

9697
checkCudaErrors(cudaGetLastError());
9798
}}}}}
99+
#endif //HAVE_NVIDIA_OPTFLOW
98100

99101
#endif

modules/cudaoptflow/src/nvidiaOpticalFlow.cpp

+19-6
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,39 @@
99
#if !defined HAVE_CUDA || defined(CUDA_DISABLER)
1010

1111
cv::Ptr<cv::cuda::NvidiaOpticalFlow_1_0> cv::cuda::NvidiaOpticalFlow_1_0::create
12-
(int, int, NVIDIA_OF_PERF_LEVEL, bool, bool, bool, int, Stream&, Stream&) {
12+
(cv::Size, NVIDIA_OF_PERF_LEVEL, bool, bool, bool, int, Stream&, Stream&) {
1313
throw_no_cuda(); return cv::Ptr<cv::cuda::NvidiaOpticalFlow_1_0>(); }
1414

1515
cv::Ptr<cv::cuda::NvidiaOpticalFlow_2_0> cv::cuda::NvidiaOpticalFlow_2_0::create(
16-
int, int, NVIDIA_OF_PERF_LEVEL, NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE, NVIDIA_OF_HINT_VECTOR_GRID_SIZE,
17-
bool, int, cv::Rect*, bool, bool, bool, int, Stream&, Stream&) {
16+
cv::Size, NVIDIA_OF_PERF_LEVEL, NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE, NVIDIA_OF_HINT_VECTOR_GRID_SIZE,
17+
bool, bool, bool, int, Stream&, Stream&) {
18+
throw_no_cuda(); return cv::Ptr<cv::cuda::NvidiaOpticalFlow_2_0>();
19+
}
20+
21+
cv::Ptr<cv::cuda::NvidiaOpticalFlow_2_0> cv::cuda::NvidiaOpticalFlow_2_0::create(
22+
cv::Size, std::vector<Rect>, NVIDIA_OF_PERF_LEVEL, NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE, NVIDIA_OF_HINT_VECTOR_GRID_SIZE,
23+
bool, bool, bool, int, Stream&, Stream&) {
1824
throw_no_cuda(); return cv::Ptr<cv::cuda::NvidiaOpticalFlow_2_0>();
1925
}
2026

2127
#elif !defined HAVE_NVIDIA_OPTFLOW
2228

2329
cv::Ptr<cv::cuda::NvidiaOpticalFlow_1_0> cv::cuda::NvidiaOpticalFlow_1_0::create(
24-
int, int, NVIDIA_OF_PERF_LEVEL, bool, bool, bool, int, Stream&, Stream&)
30+
cv::Size, NVIDIA_OF_PERF_LEVEL, bool, bool, bool, int, Stream&, Stream&)
31+
{
32+
CV_Error(cv::Error::HeaderIsNull, "OpenCV was build without NVIDIA OpticalFlow support");
33+
}
34+
35+
cv::Ptr<cv::cuda::NvidiaOpticalFlow_2_0> cv::cuda::NvidiaOpticalFlow_2_0::create(
36+
cv::Size, NVIDIA_OF_PERF_LEVEL, NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE, NVIDIA_OF_HINT_VECTOR_GRID_SIZE,
37+
bool, bool, bool, int, Stream&, Stream&)
2538
{
2639
CV_Error(cv::Error::HeaderIsNull, "OpenCV was build without NVIDIA OpticalFlow support");
2740
}
2841

2942
cv::Ptr<cv::cuda::NvidiaOpticalFlow_2_0> cv::cuda::NvidiaOpticalFlow_2_0::create(
30-
int, int, NVIDIA_OF_PERF_LEVEL, NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE, NVIDIA_OF_HINT_VECTOR_GRID_SIZE,
31-
bool, int, cv::Rect*, bool, bool, bool, int, , Stream&, Stream&)
43+
cv::Size, std::vector<Rect>, NVIDIA_OF_PERF_LEVEL, NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE, NVIDIA_OF_HINT_VECTOR_GRID_SIZE,
44+
bool, bool, bool, int, Stream&, Stream&)
3245
{
3346
CV_Error(cv::Error::HeaderIsNull, "OpenCV was build without NVIDIA OpticalFlow support");
3447
}

0 commit comments

Comments
 (0)