Commit 77f286ad authored by Vladislav Vinogradov's avatar Vladislav Vinogradov

fixed build under linux

added PyrLKOpticalFlowDense performance test
parent a10fed8f
...@@ -3,7 +3,7 @@ if(ANDROID OR IOS) ...@@ -3,7 +3,7 @@ if(ANDROID OR IOS)
endif() endif()
set(the_description "GPU-accelerated Computer Vision") set(the_description "GPU-accelerated Computer Vision")
ocv_add_module(gpu opencv_imgproc opencv_calib3d opencv_objdetect) ocv_add_module(gpu opencv_imgproc opencv_calib3d opencv_objdetect opencv_video)
ocv_module_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src/cuda") ocv_module_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src/cuda")
......
...@@ -193,4 +193,36 @@ INSTANTIATE_TEST_CASE_P(Video, PyrLKOpticalFlowSparse, testing::Combine ...@@ -193,4 +193,36 @@ INSTANTIATE_TEST_CASE_P(Video, PyrLKOpticalFlowSparse, testing::Combine
testing::Values(17, 21) testing::Values(17, 21)
)); ));
//////////////////////////////////////////////////////
// PyrLKOpticalFlowDense
GPU_PERF_TEST_1(PyrLKOpticalFlowDense, cv::gpu::DeviceInfo)
{
cv::gpu::DeviceInfo devInfo = GetParam();
cv::gpu::setDevice(devInfo.deviceID());
cv::Mat frame0_host = readImage("gpu/perf/aloe.jpg", cv::IMREAD_GRAYSCALE);
cv::Mat frame1_host = readImage("gpu/perf/aloeR.jpg", cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(frame0_host.empty());
ASSERT_FALSE(frame1_host.empty());
cv::gpu::GpuMat frame0(frame0_host);
cv::gpu::GpuMat frame1(frame1_host);
cv::gpu::GpuMat u;
cv::gpu::GpuMat v;
cv::gpu::PyrLKOpticalFlow pyrLK;
declare.time(10);
TEST_CYCLE()
{
pyrLK.dense(frame0, frame1, u, v);
}
}
INSTANTIATE_TEST_CASE_P(Video, PyrLKOpticalFlowDense, ALL_DEVICES);
#endif #endif
...@@ -541,8 +541,8 @@ namespace cv { namespace gpu { namespace device ...@@ -541,8 +541,8 @@ namespace cv { namespace gpu { namespace device
angle = atan2f(Y, X); angle = atan2f(Y, X);
if (angle < 0) if (angle < 0)
angle += 2.0f * CV_PI; angle += 2.0f * CV_PI_F;
angle *= 180.0f / CV_PI; angle *= 180.0f / CV_PI_F;
} }
} }
s_X[tid] = X; s_X[tid] = X;
...@@ -636,8 +636,8 @@ namespace cv { namespace gpu { namespace device ...@@ -636,8 +636,8 @@ namespace cv { namespace gpu { namespace device
{ {
float kp_dir = atan2f(besty, bestx); float kp_dir = atan2f(besty, bestx);
if (kp_dir < 0) if (kp_dir < 0)
kp_dir += 2.0f * CV_PI; kp_dir += 2.0f * CV_PI_F;
kp_dir *= 180.0f / CV_PI; kp_dir *= 180.0f / CV_PI_F;
featureDir[blockIdx.x] = kp_dir; featureDir[blockIdx.x] = kp_dir;
} }
...@@ -724,7 +724,7 @@ namespace cv { namespace gpu { namespace device ...@@ -724,7 +724,7 @@ namespace cv { namespace gpu { namespace device
const float centerX = featureX[blockIdx.x]; const float centerX = featureX[blockIdx.x];
const float centerY = featureY[blockIdx.x]; const float centerY = featureY[blockIdx.x];
const float size = featureSize[blockIdx.x]; const float size = featureSize[blockIdx.x];
const float descriptor_dir = featureDir[blockIdx.x] * (float)(CV_PI / 180); const float descriptor_dir = featureDir[blockIdx.x] * (float)(CV_PI_F / 180.0f);
/* The sampling intervals and wavelet sized for selecting an orientation /* The sampling intervals and wavelet sized for selecting an orientation
and building the keypoint descriptor are defined relative to 's' */ and building the keypoint descriptor are defined relative to 's' */
...@@ -817,6 +817,7 @@ namespace cv { namespace gpu { namespace device ...@@ -817,6 +817,7 @@ namespace cv { namespace gpu { namespace device
calc_dx_dy(sdx, sdy, featureX, featureY, featureSize, featureDir); calc_dx_dy(sdx, sdy, featureX, featureY, featureSize, featureDir);
__syncthreads(); __syncthreads();
const int tid = threadIdx.y * blockDim.x + threadIdx.x; const int tid = threadIdx.y * blockDim.x + threadIdx.x;
if (tid < 25) if (tid < 25)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment