mirror of
https://github.com/opencv/opencv_contrib.git
synced 2025-10-20 12:55:15 +08:00
NVIDIA_OPTICAL_FLOW_2_0_INTEGRATION
This commit is contained in:

committed by
Vishal Bhaskar Chiluka

parent
0b6b8ff9dd
commit
582fe44b7a
@@ -339,13 +339,8 @@ PERF_TEST_P(ImagePair, NvidiaOpticalFlow_1_0,
|
||||
|
||||
const cv::Mat frame1 = readImage(GetParam().second, cv::IMREAD_GRAYSCALE);
|
||||
ASSERT_FALSE(frame1.empty());
|
||||
|
||||
const int width = frame0.size().width;
|
||||
const int height = frame0.size().height;
|
||||
const bool enableTemporalHints = false;
|
||||
const bool enableExternalHints = false;
|
||||
const bool enableCostBuffer = false;
|
||||
const int gpuid = 0;
|
||||
Stream inputStream;
|
||||
Stream outputStream;
|
||||
|
||||
if (PERF_RUN_CUDA())
|
||||
{
|
||||
@@ -355,9 +350,9 @@ PERF_TEST_P(ImagePair, NvidiaOpticalFlow_1_0,
|
||||
cv::Ptr<cv::cuda::NvidiaOpticalFlow_1_0> d_nvof;
|
||||
try
|
||||
{
|
||||
d_nvof = cv::cuda::NvidiaOpticalFlow_1_0::create(width, height,
|
||||
d_nvof = cv::cuda::NvidiaOpticalFlow_1_0::create(frame0.size(),
|
||||
cv::cuda::NvidiaOpticalFlow_1_0::NVIDIA_OF_PERF_LEVEL::NV_OF_PERF_LEVEL_FAST,
|
||||
enableTemporalHints, enableExternalHints, enableCostBuffer, gpuid);
|
||||
false, false, false, 0, inputStream, outputStream);
|
||||
}
|
||||
catch (const cv::Exception& e)
|
||||
{
|
||||
@@ -376,6 +371,63 @@ PERF_TEST_P(ImagePair, NvidiaOpticalFlow_1_0,
|
||||
|
||||
CUDA_SANITY_CHECK(u, 1e-10);
|
||||
CUDA_SANITY_CHECK(v, 1e-10);
|
||||
|
||||
d_nvof->collectGarbage();
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
// NvidiaOpticalFlow_2_0
|
||||
|
||||
PERF_TEST_P(ImagePair, NvidiaOpticalFlow_2_0,
|
||||
Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png")))
|
||||
{
|
||||
declare.time(10);
|
||||
|
||||
const cv::Mat frame0 = readImage(GetParam().first, cv::IMREAD_GRAYSCALE);
|
||||
ASSERT_FALSE(frame0.empty());
|
||||
|
||||
const cv::Mat frame1 = readImage(GetParam().second, cv::IMREAD_GRAYSCALE);
|
||||
ASSERT_FALSE(frame1.empty());
|
||||
|
||||
const cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE outGridSize
|
||||
= cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE::NV_OF_OUTPUT_VECTOR_GRID_SIZE_1;
|
||||
const cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_HINT_VECTOR_GRID_SIZE hintGridSize
|
||||
= cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_HINT_VECTOR_GRID_SIZE::NV_OF_HINT_VECTOR_GRID_SIZE_1;
|
||||
Stream inputStream;
|
||||
Stream outputStream;
|
||||
|
||||
if (PERF_RUN_CUDA())
|
||||
{
|
||||
const cv::cuda::GpuMat d_frame0(frame0);
|
||||
const cv::cuda::GpuMat d_frame1(frame1);
|
||||
cv::cuda::GpuMat d_flow;
|
||||
cv::Ptr<cv::cuda::NvidiaOpticalFlow_2_0> d_nvof;
|
||||
try
|
||||
{
|
||||
d_nvof = cv::cuda::NvidiaOpticalFlow_2_0::create(frame0.size(),
|
||||
cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_PERF_LEVEL::NV_OF_PERF_LEVEL_FAST, outGridSize, hintGridSize,
|
||||
false, false, false, 0, inputStream, outputStream);
|
||||
}
|
||||
catch (const cv::Exception& e)
|
||||
{
|
||||
if (e.code == Error::StsBadFunc || e.code == Error::StsBadArg || e.code == Error::StsNullPtr)
|
||||
throw SkipTestException("Current configuration is not supported");
|
||||
throw;
|
||||
}
|
||||
|
||||
TEST_CYCLE() d_nvof->calc(d_frame0, d_frame1, d_flow);
|
||||
|
||||
cv::cuda::GpuMat flow[2];
|
||||
cv::cuda::split(d_flow, flow);
|
||||
|
||||
cv::cuda::GpuMat u = flow[0];
|
||||
cv::cuda::GpuMat v = flow[1];
|
||||
|
||||
CUDA_SANITY_CHECK(u, 1e-10);
|
||||
CUDA_SANITY_CHECK(v, 1e-10);
|
||||
|
||||
d_nvof->collectGarbage();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user