now it executes only on one device added posibility to specify device on which tests will be executedpull/13/merge
parent
ddca47040b
commit
6e4eb722a6
13 changed files with 2017 additions and 2791 deletions
File diff suppressed because it is too large
Load Diff
@ -1,209 +1,179 @@ |
|||||||
#include "perf_precomp.hpp" |
#include "perf_precomp.hpp" |
||||||
|
|
||||||
#ifdef HAVE_CUDA |
using namespace std; |
||||||
|
using namespace testing; |
||||||
|
|
||||||
|
namespace { |
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// SURF
|
// SURF
|
||||||
|
|
||||||
GPU_PERF_TEST_1(SURF, cv::gpu::DeviceInfo) |
DEF_PARAM_TEST_1(Image, string); |
||||||
{ |
|
||||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
|
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
|
||||||
|
|
||||||
cv::Mat img_host = readImage("gpu/perf/aloe.jpg", cv::IMREAD_GRAYSCALE); |
PERF_TEST_P(Image, Features2D_SURF, Values<string>("gpu/perf/aloe.jpg")) |
||||||
ASSERT_FALSE(img_host.empty()); |
{ |
||||||
|
declare.time(2.0); |
||||||
|
|
||||||
cv::gpu::SURF_GPU surf; |
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); |
||||||
|
ASSERT_FALSE(img.empty()); |
||||||
|
|
||||||
cv::gpu::GpuMat img(img_host); |
cv::gpu::SURF_GPU d_surf; |
||||||
cv::gpu::GpuMat keypoints, descriptors; |
|
||||||
|
|
||||||
surf(img, cv::gpu::GpuMat(), keypoints, descriptors); |
cv::gpu::GpuMat d_img(img); |
||||||
|
cv::gpu::GpuMat d_keypoints, d_descriptors; |
||||||
|
|
||||||
declare.time(2.0); |
d_surf(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
surf(img, cv::gpu::GpuMat(), keypoints, descriptors); |
d_surf(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Features2D, SURF, ALL_DEVICES); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// FAST
|
// FAST
|
||||||
|
|
||||||
GPU_PERF_TEST_1(FAST, cv::gpu::DeviceInfo) |
PERF_TEST_P(Image, Features2D_FAST, Values<string>("gpu/perf/aloe.jpg")) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
ASSERT_FALSE(img.empty()); |
||||||
|
|
||||||
cv::Mat img_host = readImage("gpu/perf/aloe.jpg", cv::IMREAD_GRAYSCALE); |
cv::gpu::FAST_GPU d_fast(20); |
||||||
ASSERT_FALSE(img_host.empty()); |
|
||||||
|
|
||||||
cv::gpu::FAST_GPU fast(20); |
cv::gpu::GpuMat d_img(img); |
||||||
|
cv::gpu::GpuMat d_keypoints; |
||||||
|
|
||||||
cv::gpu::GpuMat img(img_host); |
d_fast(d_img, cv::gpu::GpuMat(), d_keypoints); |
||||||
cv::gpu::GpuMat keypoints; |
|
||||||
|
|
||||||
fast(img, cv::gpu::GpuMat(), keypoints); |
|
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
fast(img, cv::gpu::GpuMat(), keypoints); |
d_fast(d_img, cv::gpu::GpuMat(), d_keypoints); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Features2D, FAST, ALL_DEVICES); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// ORB
|
// ORB
|
||||||
|
|
||||||
GPU_PERF_TEST_1(ORB, cv::gpu::DeviceInfo) |
PERF_TEST_P(Image, Features2D_ORB, Values<string>("gpu/perf/aloe.jpg")) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
ASSERT_FALSE(img.empty()); |
||||||
|
|
||||||
cv::Mat img_host = readImage("gpu/perf/aloe.jpg", cv::IMREAD_GRAYSCALE); |
cv::gpu::ORB_GPU d_orb(4000); |
||||||
ASSERT_FALSE(img_host.empty()); |
|
||||||
|
|
||||||
cv::gpu::ORB_GPU orb(4000); |
cv::gpu::GpuMat d_img(img); |
||||||
|
cv::gpu::GpuMat d_keypoints, d_descriptors; |
||||||
|
|
||||||
cv::gpu::GpuMat img(img_host); |
d_orb(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); |
||||||
cv::gpu::GpuMat keypoints, descriptors; |
|
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
orb(img, cv::gpu::GpuMat(), keypoints, descriptors); |
d_orb(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Features2D, ORB, ALL_DEVICES); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// BruteForceMatcher_match
|
// BFMatch
|
||||||
|
|
||||||
IMPLEMENT_PARAM_CLASS(DescriptorSize, int) |
DEF_PARAM_TEST(DescSize_Norm, int, NormType); |
||||||
|
|
||||||
GPU_PERF_TEST(BruteForceMatcher_match, cv::gpu::DeviceInfo, DescriptorSize, NormType) |
PERF_TEST_P(DescSize_Norm, Features2D_BFMatch, Combine(Values(64, 128, 256), Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
declare.time(3.0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
|
||||||
|
|
||||||
int desc_size = GET_PARAM(1); |
int desc_size = GET_PARAM(0); |
||||||
int normType = GET_PARAM(2); |
int normType = GET_PARAM(1); |
||||||
|
|
||||||
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
||||||
|
|
||||||
cv::Mat query_host(3000, desc_size, type); |
cv::Mat query(3000, desc_size, type); |
||||||
fill(query_host, 0.0, 10.0); |
fillRandom(query); |
||||||
|
|
||||||
cv::Mat train_host(3000, desc_size, type); |
|
||||||
fill(train_host, 0.0, 10.0); |
|
||||||
|
|
||||||
cv::gpu::BFMatcher_GPU matcher(normType); |
cv::Mat train(3000, desc_size, type); |
||||||
|
fillRandom(train); |
||||||
|
|
||||||
cv::gpu::GpuMat query(query_host); |
cv::gpu::BFMatcher_GPU d_matcher(normType); |
||||||
cv::gpu::GpuMat train(train_host); |
|
||||||
cv::gpu::GpuMat trainIdx, distance; |
|
||||||
|
|
||||||
matcher.matchSingle(query, train, trainIdx, distance); |
cv::gpu::GpuMat d_query(query); |
||||||
|
cv::gpu::GpuMat d_train(train); |
||||||
|
cv::gpu::GpuMat d_trainIdx, d_distance; |
||||||
|
|
||||||
declare.time(3.0); |
d_matcher.matchSingle(d_query, d_train, d_trainIdx, d_distance); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
matcher.matchSingle(query, train, trainIdx, distance); |
d_matcher.matchSingle(d_query, d_train, d_trainIdx, d_distance); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Features2D, BruteForceMatcher_match, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
testing::Values(DescriptorSize(64), DescriptorSize(128), DescriptorSize(256)), |
|
||||||
testing::Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// BruteForceMatcher_knnMatch
|
// BFKnnMatch
|
||||||
|
|
||||||
IMPLEMENT_PARAM_CLASS(K, int) |
DEF_PARAM_TEST(DescSize_K_Norm, int, int, NormType); |
||||||
|
|
||||||
GPU_PERF_TEST(BruteForceMatcher_knnMatch, cv::gpu::DeviceInfo, DescriptorSize, K, NormType) |
PERF_TEST_P(DescSize_K_Norm, Features2D_BFKnnMatch, Combine( |
||||||
|
Values(64, 128, 256), |
||||||
|
Values(2, 3), |
||||||
|
Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
declare.time(3.0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
|
||||||
|
|
||||||
int desc_size = GET_PARAM(1); |
int desc_size = GET_PARAM(0); |
||||||
int k = GET_PARAM(2); |
int k = GET_PARAM(1); |
||||||
int normType = GET_PARAM(3); |
int normType = GET_PARAM(2); |
||||||
|
|
||||||
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
||||||
|
|
||||||
cv::Mat query_host(3000, desc_size, type); |
cv::Mat query(3000, desc_size, type); |
||||||
fill(query_host, 0.0, 10.0); |
fillRandom(query); |
||||||
|
|
||||||
cv::Mat train_host(3000, desc_size, type); |
|
||||||
fill(train_host, 0.0, 10.0); |
|
||||||
|
|
||||||
cv::gpu::BFMatcher_GPU matcher(normType); |
cv::Mat train(3000, desc_size, type); |
||||||
|
fillRandom(train); |
||||||
|
|
||||||
cv::gpu::GpuMat query(query_host); |
cv::gpu::BFMatcher_GPU d_matcher(normType); |
||||||
cv::gpu::GpuMat train(train_host); |
|
||||||
cv::gpu::GpuMat trainIdx, distance, allDist; |
|
||||||
|
|
||||||
matcher.knnMatchSingle(query, train, trainIdx, distance, allDist, k); |
cv::gpu::GpuMat d_query(query); |
||||||
|
cv::gpu::GpuMat d_train(train); |
||||||
|
cv::gpu::GpuMat d_trainIdx, d_distance, d_allDist; |
||||||
|
|
||||||
declare.time(3.0); |
d_matcher.knnMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_allDist, k); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
matcher.knnMatchSingle(query, train, trainIdx, distance, allDist, k); |
d_matcher.knnMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_allDist, k); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Features2D, BruteForceMatcher_knnMatch, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
testing::Values(DescriptorSize(64), DescriptorSize(128), DescriptorSize(256)), |
|
||||||
testing::Values(K(2), K(3)), |
|
||||||
testing::Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// BruteForceMatcher_radiusMatch
|
// BFRadiusMatch
|
||||||
|
|
||||||
GPU_PERF_TEST(BruteForceMatcher_radiusMatch, cv::gpu::DeviceInfo, DescriptorSize, NormType) |
PERF_TEST_P(DescSize_Norm, Features2D_BFRadiusMatch, Combine(Values(64, 128, 256), Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
declare.time(3.0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
|
||||||
|
|
||||||
int desc_size = GET_PARAM(1); |
int desc_size = GET_PARAM(0); |
||||||
int normType = GET_PARAM(2); |
int normType = GET_PARAM(1); |
||||||
|
|
||||||
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
int type = normType == cv::NORM_HAMMING ? CV_8U : CV_32F; |
||||||
|
|
||||||
cv::Mat query_host(3000, desc_size, type); |
cv::Mat query(3000, desc_size, type); |
||||||
fill(query_host, 0.0, 1.0); |
fillRandom(query, 0.0, 1.0); |
||||||
|
|
||||||
cv::Mat train_host(3000, desc_size, type); |
cv::Mat train(3000, desc_size, type); |
||||||
fill(train_host, 0.0, 1.0); |
fillRandom(train, 0.0, 1.0); |
||||||
|
|
||||||
cv::gpu::BFMatcher_GPU matcher(normType); |
cv::gpu::BFMatcher_GPU d_matcher(normType); |
||||||
|
|
||||||
cv::gpu::GpuMat query(query_host); |
cv::gpu::GpuMat d_query(query); |
||||||
cv::gpu::GpuMat train(train_host); |
cv::gpu::GpuMat d_train(train); |
||||||
cv::gpu::GpuMat trainIdx, nMatches, distance; |
cv::gpu::GpuMat d_trainIdx, d_nMatches, d_distance; |
||||||
|
|
||||||
matcher.radiusMatchSingle(query, train, trainIdx, distance, nMatches, 2.0); |
d_matcher.radiusMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_nMatches, 2.0); |
||||||
|
|
||||||
declare.time(3.0); |
|
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
matcher.radiusMatchSingle(query, train, trainIdx, distance, nMatches, 2.0); |
d_matcher.radiusMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_nMatches, 2.0); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Features2D, BruteForceMatcher_radiusMatch, testing::Combine( |
} // namespace
|
||||||
ALL_DEVICES, |
|
||||||
testing::Values(DescriptorSize(64), DescriptorSize(128), DescriptorSize(256)), |
|
||||||
testing::Values(NormType(cv::NORM_L1), NormType(cv::NORM_L2), NormType(cv::NORM_HAMMING)))); |
|
||||||
|
|
||||||
#endif |
|
||||||
|
@ -1,308 +1,235 @@ |
|||||||
#include "perf_precomp.hpp" |
#include "perf_precomp.hpp" |
||||||
|
|
||||||
#ifdef HAVE_CUDA |
using namespace std; |
||||||
|
using namespace testing; |
||||||
|
|
||||||
|
namespace { |
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Blur
|
// Blur
|
||||||
|
|
||||||
IMPLEMENT_PARAM_CLASS(KernelSize, int) |
DEF_PARAM_TEST(Sz_Type_KernelSz, cv::Size, MatType, int); |
||||||
|
|
||||||
GPU_PERF_TEST(Blur, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
PERF_TEST_P(Sz_Type_KernelSz, Filters_Blur, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4), Values(3, 5, 7))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int type = GET_PARAM(1); |
||||||
|
int ksize = GET_PARAM(2); |
||||||
cv::Size size = GET_PARAM(1); |
|
||||||
int type = GET_PARAM(2); |
|
||||||
int ksize = GET_PARAM(3); |
|
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::Mat src(size, type); |
||||||
fill(src_host, 0.0, 255.0); |
fillRandom(src); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
|
|
||||||
cv::gpu::blur(src, dst, cv::Size(ksize, ksize)); |
cv::gpu::blur(d_src, d_dst, cv::Size(ksize, ksize)); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::blur(src, dst, cv::Size(ksize, ksize)); |
cv::gpu::blur(d_src, d_dst, cv::Size(ksize, ksize)); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, Blur, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4)), |
|
||||||
testing::Values(KernelSize(3), KernelSize(5), KernelSize(7)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Sobel
|
// Sobel
|
||||||
|
|
||||||
GPU_PERF_TEST(Sobel, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
PERF_TEST_P(Sz_Type_KernelSz, Filters_Sobel, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1), Values(3, 5, 7, 9, 11, 13, 15))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int type = GET_PARAM(1); |
||||||
|
int ksize = GET_PARAM(2); |
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
cv::Mat src(size, type); |
||||||
int type = GET_PARAM(2); |
fillRandom(src); |
||||||
int ksize = GET_PARAM(3); |
|
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::gpu::GpuMat d_src(src); |
||||||
fill(src_host, 0.0, 255.0); |
cv::gpu::GpuMat d_dst; |
||||||
|
cv::gpu::GpuMat d_buf; |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::Sobel(d_src, d_dst, -1, 1, 1, d_buf, ksize); |
||||||
cv::gpu::GpuMat dst; |
|
||||||
cv::gpu::GpuMat buf; |
|
||||||
|
|
||||||
cv::gpu::Sobel(src, dst, -1, 1, 1, buf, ksize); |
|
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::Sobel(src, dst, -1, 1, 1, buf, ksize); |
cv::gpu::Sobel(d_src, d_dst, -1, 1, 1, d_buf, ksize); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, Sobel, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1)), |
|
||||||
testing::Values(KernelSize(3), KernelSize(5), KernelSize(7), KernelSize(9), KernelSize(11), KernelSize(13), KernelSize(15)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Scharr
|
// Scharr
|
||||||
|
|
||||||
GPU_PERF_TEST(Scharr, cv::gpu::DeviceInfo, cv::Size, MatType) |
PERF_TEST_P(Sz_Type, Filters_Scharr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int type = GET_PARAM(1); |
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
cv::Mat src(size, type); |
||||||
int type = GET_PARAM(2); |
fillRandom(src); |
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::gpu::GpuMat d_src(src); |
||||||
fill(src_host, 0.0, 255.0); |
cv::gpu::GpuMat d_dst; |
||||||
|
cv::gpu::GpuMat d_buf; |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::Scharr(d_src, d_dst, -1, 1, 0, d_buf); |
||||||
cv::gpu::GpuMat dst; |
|
||||||
cv::gpu::GpuMat buf; |
|
||||||
|
|
||||||
cv::gpu::Scharr(src, dst, -1, 1, 0, buf); |
|
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::Scharr(src, dst, -1, 1, 0, buf); |
cv::gpu::Scharr(d_src, d_dst, -1, 1, 0, d_buf); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, Scharr, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// GaussianBlur
|
// GaussianBlur
|
||||||
|
|
||||||
GPU_PERF_TEST(GaussianBlur, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
PERF_TEST_P(Sz_Type_KernelSz, Filters_GaussianBlur, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1), Values(3, 5, 7, 9, 11, 13, 15))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int type = GET_PARAM(1); |
||||||
|
int ksize = GET_PARAM(2); |
||||||
cv::Size size = GET_PARAM(1); |
|
||||||
int type = GET_PARAM(2); |
|
||||||
int ksize = GET_PARAM(3); |
|
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::Mat src(size, type); |
||||||
fill(src_host, 0.0, 255.0); |
fillRandom(src); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
cv::gpu::GpuMat buf; |
cv::gpu::GpuMat d_buf; |
||||||
|
|
||||||
cv::gpu::GaussianBlur(src, dst, cv::Size(ksize, ksize), buf, 0.5); |
cv::gpu::GaussianBlur(d_src, d_dst, cv::Size(ksize, ksize), d_buf, 0.5); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::GaussianBlur(src, dst, cv::Size(ksize, ksize), buf, 0.5); |
cv::gpu::GaussianBlur(d_src, d_dst, cv::Size(ksize, ksize), d_buf, 0.5); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, GaussianBlur, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1)), |
|
||||||
testing::Values(KernelSize(3), KernelSize(5), KernelSize(7), KernelSize(9), KernelSize(11), KernelSize(13), KernelSize(15)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Laplacian
|
// Laplacian
|
||||||
|
|
||||||
GPU_PERF_TEST(Laplacian, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
PERF_TEST_P(Sz_Type_KernelSz, Filters_Laplacian, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1, CV_32FC4), Values(1, 3))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int type = GET_PARAM(1); |
||||||
|
int ksize = GET_PARAM(2); |
||||||
cv::Size size = GET_PARAM(1); |
|
||||||
int type = GET_PARAM(2); |
|
||||||
int ksize = GET_PARAM(3); |
|
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::Mat src(size, type); |
||||||
fill(src_host, 0.0, 255.0); |
fillRandom(src); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
|
|
||||||
cv::gpu::Laplacian(src, dst, -1, ksize); |
cv::gpu::Laplacian(d_src, d_dst, -1, ksize); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::Laplacian(src, dst, -1, ksize); |
cv::gpu::Laplacian(d_src, d_dst, -1, ksize); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, Laplacian, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1), MatType(CV_32FC4)), |
|
||||||
testing::Values(KernelSize(1), KernelSize(3)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Erode
|
// Erode
|
||||||
|
|
||||||
GPU_PERF_TEST(Erode, cv::gpu::DeviceInfo, cv::Size, MatType) |
PERF_TEST_P(Sz_Type, Filters_Erode, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int type = GET_PARAM(1); |
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
|
||||||
int type = GET_PARAM(2); |
|
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::Mat src(size, type); |
||||||
fill(src_host, 0.0, 255.0); |
fillRandom(src); |
||||||
|
|
||||||
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
cv::gpu::GpuMat buf; |
cv::gpu::GpuMat d_buf; |
||||||
|
|
||||||
cv::gpu::erode(src, dst, ker, buf); |
cv::gpu::erode(d_src, d_dst, ker, d_buf); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::erode(src, dst, ker, buf); |
cv::gpu::erode(d_src, d_dst, ker, d_buf); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, Erode, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Dilate
|
// Dilate
|
||||||
|
|
||||||
GPU_PERF_TEST(Dilate, cv::gpu::DeviceInfo, cv::Size, MatType) |
PERF_TEST_P(Sz_Type, Filters_Dilate, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int type = GET_PARAM(1); |
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
cv::Mat src(size, type); |
||||||
int type = GET_PARAM(2); |
fillRandom(src); |
||||||
|
|
||||||
cv::Mat src_host(size, type); |
|
||||||
fill(src_host, 0.0, 255.0); |
|
||||||
|
|
||||||
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
cv::gpu::GpuMat buf; |
cv::gpu::GpuMat d_buf; |
||||||
|
|
||||||
cv::gpu::dilate(src, dst, ker, buf); |
cv::gpu::dilate(d_src, d_dst, ker, d_buf); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::dilate(src, dst, ker, buf); |
cv::gpu::dilate(d_src, d_dst, ker, d_buf); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, Dilate, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// MorphologyEx
|
// MorphologyEx
|
||||||
|
|
||||||
CV_ENUM(MorphOp, cv::MORPH_OPEN, cv::MORPH_CLOSE, cv::MORPH_GRADIENT, cv::MORPH_TOPHAT, cv::MORPH_BLACKHAT) |
CV_ENUM(MorphOp, cv::MORPH_OPEN, cv::MORPH_CLOSE, cv::MORPH_GRADIENT, cv::MORPH_TOPHAT, cv::MORPH_BLACKHAT) |
||||||
#define ALL_MORPH_OPS testing::Values(MorphOp(cv::MORPH_OPEN), MorphOp(cv::MORPH_CLOSE), MorphOp(cv::MORPH_GRADIENT), MorphOp(cv::MORPH_TOPHAT), MorphOp(cv::MORPH_BLACKHAT)) |
#define ALL_MORPH_OPS ValuesIn(MorphOp::all()) |
||||||
|
|
||||||
GPU_PERF_TEST(MorphologyEx, cv::gpu::DeviceInfo, cv::Size, MatType, MorphOp) |
DEF_PARAM_TEST(Sz_Type_Op, cv::Size, MatType, MorphOp); |
||||||
{ |
|
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
|
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
|
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
PERF_TEST_P(Sz_Type_Op, Filters_MorphologyEx, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4), ALL_MORPH_OPS)) |
||||||
int type = GET_PARAM(2); |
{ |
||||||
int morphOp = GET_PARAM(3); |
cv::Size size = GET_PARAM(0); |
||||||
|
int type = GET_PARAM(1); |
||||||
|
int morphOp = GET_PARAM(2); |
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::Mat src(size, type); |
||||||
fill(src_host, 0.0, 255.0); |
fillRandom(src); |
||||||
|
|
||||||
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
cv::gpu::GpuMat buf1; |
cv::gpu::GpuMat d_buf1; |
||||||
cv::gpu::GpuMat buf2; |
cv::gpu::GpuMat d_buf2; |
||||||
|
|
||||||
cv::gpu::morphologyEx(src, dst, morphOp, ker, buf1, buf2); |
cv::gpu::morphologyEx(d_src, d_dst, morphOp, ker, d_buf1, d_buf2); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::morphologyEx(src, dst, morphOp, ker, buf1, buf2); |
cv::gpu::morphologyEx(d_src, d_dst, morphOp, ker, d_buf1, d_buf2); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, MorphologyEx, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4)), |
|
||||||
ALL_MORPH_OPS)); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Filter2D
|
// Filter2D
|
||||||
|
|
||||||
GPU_PERF_TEST(Filter2D, cv::gpu::DeviceInfo, cv::Size, MatType, KernelSize) |
PERF_TEST_P(Sz_Type_KernelSz, Filters_Filter2D, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC1, CV_8UC4, CV_32FC1, CV_32FC4), Values(3, 5, 7, 9, 11, 13, 15))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int type = GET_PARAM(1); |
||||||
|
int ksize = GET_PARAM(2); |
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
cv::Mat src(size, type); |
||||||
int type = GET_PARAM(2); |
fillRandom(src); |
||||||
int ksize = GET_PARAM(3); |
|
||||||
|
|
||||||
cv::Mat src_host(size, type); |
|
||||||
fill(src_host, 0.0, 255.0); |
|
||||||
|
|
||||||
cv::Mat kernel(ksize, ksize, CV_32FC1); |
cv::Mat kernel(ksize, ksize, CV_32FC1); |
||||||
fill(kernel, 0.0, 1.0); |
fillRandom(kernel, 0.0, 1.0); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
|
|
||||||
cv::gpu::filter2D(src, dst, -1, kernel); |
cv::gpu::filter2D(d_src, d_dst, -1, kernel); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cv::gpu::filter2D(src, dst, -1, kernel); |
cv::gpu::filter2D(d_src, d_dst, -1, kernel); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Filters, Filter2D, testing::Combine( |
} // namespace
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC4), MatType(CV_32FC1), MatType(CV_32FC4)), |
|
||||||
testing::Values(KernelSize(3), KernelSize(5), KernelSize(7), KernelSize(9), KernelSize(11), KernelSize(13), KernelSize(15)))); |
|
||||||
|
|
||||||
#endif |
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,141 +1,115 @@ |
|||||||
#include "perf_precomp.hpp" |
#include "perf_precomp.hpp" |
||||||
|
|
||||||
#ifdef HAVE_CUDA |
using namespace std; |
||||||
|
using namespace testing; |
||||||
|
|
||||||
|
namespace { |
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// SetTo
|
// SetTo
|
||||||
|
|
||||||
GPU_PERF_TEST(SetTo, cv::gpu::DeviceInfo, cv::Size, MatType) |
PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(1, 3, 4))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int depth = GET_PARAM(1); |
||||||
|
int channels = GET_PARAM(2); |
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
int type = CV_MAKE_TYPE(depth, channels); |
||||||
int type = GET_PARAM(2); |
|
||||||
|
|
||||||
cv::gpu::GpuMat src(size, type); |
|
||||||
cv::Scalar val(1, 2, 3, 4); |
cv::Scalar val(1, 2, 3, 4); |
||||||
|
|
||||||
src.setTo(val); |
cv::gpu::GpuMat d_src(size, type); |
||||||
|
|
||||||
|
d_src.setTo(val); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
src.setTo(val); |
d_src.setTo(val); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(MatOp, SetTo, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC3), MatType(CV_8UC4), |
|
||||||
MatType(CV_16UC1), MatType(CV_16UC3), MatType(CV_16UC4), |
|
||||||
MatType(CV_32FC1), MatType(CV_32FC3), MatType(CV_32FC4), |
|
||||||
MatType(CV_64FC1), MatType(CV_64FC3), MatType(CV_64FC4)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// SetToMasked
|
// SetToMasked
|
||||||
|
|
||||||
GPU_PERF_TEST(SetToMasked, cv::gpu::DeviceInfo, cv::Size, MatType) |
PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(1, 3, 4))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int depth = GET_PARAM(1); |
||||||
|
int channels = GET_PARAM(2); |
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
int type = CV_MAKE_TYPE(depth, channels); |
||||||
int type = GET_PARAM(2); |
|
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::Mat src(size, type); |
||||||
fill(src_host, 0, 255); |
fillRandom(src); |
||||||
|
|
||||||
cv::Mat mask_host(size, CV_8UC1); |
cv::Mat mask(size, CV_8UC1); |
||||||
fill(mask_host, 0, 2); |
fillRandom(mask, 0, 2); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
|
||||||
cv::Scalar val(1, 2, 3, 4); |
cv::Scalar val(1, 2, 3, 4); |
||||||
cv::gpu::GpuMat mask(mask_host); |
|
||||||
|
|
||||||
src.setTo(val, mask); |
cv::gpu::GpuMat d_src(src); |
||||||
|
cv::gpu::GpuMat d_mask(mask); |
||||||
|
|
||||||
|
d_src.setTo(val, d_mask); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
src.setTo(val, mask); |
d_src.setTo(val, d_mask); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(MatOp, SetToMasked, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC3), MatType(CV_8UC4), |
|
||||||
MatType(CV_16UC1), MatType(CV_16UC3), MatType(CV_16UC4), |
|
||||||
MatType(CV_32FC1), MatType(CV_32FC3), MatType(CV_32FC4), |
|
||||||
MatType(CV_64FC1), MatType(CV_64FC3), MatType(CV_64FC4)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// CopyToMasked
|
// CopyToMasked
|
||||||
|
|
||||||
GPU_PERF_TEST(CopyToMasked, cv::gpu::DeviceInfo, cv::Size, MatType) |
PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(1, 3, 4))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
cv::Size size = GET_PARAM(0); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
int depth = GET_PARAM(1); |
||||||
|
int channels = GET_PARAM(2); |
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
int type = CV_MAKE_TYPE(depth, channels); |
||||||
int type = GET_PARAM(2); |
|
||||||
|
|
||||||
cv::Mat src_host(size, type); |
cv::Mat src(size, type); |
||||||
fill(src_host, 0, 255); |
fillRandom(src); |
||||||
|
|
||||||
cv::Mat mask_host(size, CV_8UC1); |
cv::Mat mask(size, CV_8UC1); |
||||||
fill(mask_host, 0, 2); |
fillRandom(mask, 0, 2); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat mask(mask_host); |
cv::gpu::GpuMat d_mask(mask); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
|
|
||||||
src.copyTo(dst, mask); |
d_src.copyTo(d_dst, d_mask); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
src.copyTo(dst, mask); |
d_src.copyTo(d_dst, d_mask); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(MatOp, CopyToMasked, testing::Combine( |
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatType(CV_8UC1), MatType(CV_8UC3), MatType(CV_8UC4), |
|
||||||
MatType(CV_16UC1), MatType(CV_16UC3), MatType(CV_16UC4), |
|
||||||
MatType(CV_32FC1), MatType(CV_32FC3), MatType(CV_32FC4), |
|
||||||
MatType(CV_64FC1), MatType(CV_64FC3), MatType(CV_64FC4)))); |
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// ConvertTo
|
// ConvertTo
|
||||||
|
|
||||||
GPU_PERF_TEST(ConvertTo, cv::gpu::DeviceInfo, cv::Size, MatDepth, MatDepth) |
DEF_PARAM_TEST(Sz_2Depth, cv::Size, MatDepth, MatDepth); |
||||||
{ |
|
||||||
cv::gpu::DeviceInfo devInfo = GET_PARAM(0); |
|
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
|
||||||
|
|
||||||
cv::Size size = GET_PARAM(1); |
PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(CV_8U, CV_16U, CV_32F, CV_64F))) |
||||||
int depth1 = GET_PARAM(2); |
{ |
||||||
int depth2 = GET_PARAM(3); |
cv::Size size = GET_PARAM(0); |
||||||
|
int depth1 = GET_PARAM(1); |
||||||
|
int depth2 = GET_PARAM(2); |
||||||
|
|
||||||
cv::Mat src_host(size, depth1); |
cv::Mat src(size, depth1); |
||||||
fill(src_host, 0, 255); |
fillRandom(src); |
||||||
|
|
||||||
cv::gpu::GpuMat src(src_host); |
cv::gpu::GpuMat d_src(src); |
||||||
cv::gpu::GpuMat dst; |
cv::gpu::GpuMat d_dst; |
||||||
|
|
||||||
src.convertTo(dst, depth2, 0.5, 1.0); |
d_src.convertTo(d_dst, depth2, 0.5, 1.0); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
src.convertTo(dst, depth2, 0.5, 1.0); |
d_src.convertTo(d_dst, depth2, 0.5, 1.0); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(MatOp, ConvertTo, testing::Combine( |
} // namespace
|
||||||
ALL_DEVICES, |
|
||||||
GPU_TYPICAL_MAT_SIZES, |
|
||||||
testing::Values(MatDepth(CV_8U), MatDepth(CV_16U), MatDepth(CV_32F), MatDepth(CV_64F)), |
|
||||||
testing::Values(MatDepth(CV_8U), MatDepth(CV_16U), MatDepth(CV_32F), MatDepth(CV_64F)))); |
|
||||||
|
|
||||||
#endif |
|
||||||
|
@ -1,85 +1,84 @@ |
|||||||
#include "perf_precomp.hpp" |
#include "perf_precomp.hpp" |
||||||
|
|
||||||
#ifdef HAVE_CUDA |
using namespace std; |
||||||
|
using namespace testing; |
||||||
|
|
||||||
|
namespace { |
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
// HOG
|
// HOG
|
||||||
|
|
||||||
GPU_PERF_TEST_1(HOG, cv::gpu::DeviceInfo) |
DEF_PARAM_TEST_1(Image, string); |
||||||
{ |
|
||||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
|
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
|
||||||
|
|
||||||
cv::Mat img_host = readImage("gpu/hog/road.png", cv::IMREAD_GRAYSCALE); |
PERF_TEST_P(Image, ObjDetect_HOG, Values<string>("gpu/hog/road.png")) |
||||||
ASSERT_FALSE(img_host.empty()); |
{ |
||||||
|
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); |
||||||
|
ASSERT_FALSE(img.empty()); |
||||||
|
|
||||||
cv::gpu::GpuMat img(img_host); |
|
||||||
std::vector<cv::Rect> found_locations; |
std::vector<cv::Rect> found_locations; |
||||||
|
|
||||||
cv::gpu::HOGDescriptor hog; |
cv::gpu::GpuMat d_img(img); |
||||||
hog.setSVMDetector(cv::gpu::HOGDescriptor::getDefaultPeopleDetector()); |
|
||||||
|
|
||||||
hog.detectMultiScale(img, found_locations); |
cv::gpu::HOGDescriptor d_hog; |
||||||
|
d_hog.setSVMDetector(cv::gpu::HOGDescriptor::getDefaultPeopleDetector()); |
||||||
|
|
||||||
|
d_hog.detectMultiScale(d_img, found_locations); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
hog.detectMultiScale(img, found_locations); |
d_hog.detectMultiScale(d_img, found_locations); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(ObjDetect, HOG, ALL_DEVICES); |
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
// HaarClassifier
|
// HaarClassifier
|
||||||
|
|
||||||
GPU_PERF_TEST_1(HaarClassifier, cv::gpu::DeviceInfo) |
typedef pair<string, string> pair_string; |
||||||
{ |
DEF_PARAM_TEST_1(ImageAndCascade, pair_string); |
||||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
|
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
|
||||||
|
|
||||||
cv::Mat img_host = readImage("gpu/haarcascade/group_1_640x480_VGA.pgm", cv::IMREAD_GRAYSCALE); |
PERF_TEST_P(ImageAndCascade, ObjDetect_HaarClassifier, |
||||||
ASSERT_FALSE(img_host.empty()); |
Values<pair_string>(make_pair("gpu/haarcascade/group_1_640x480_VGA.pgm", "gpu/perf/haarcascade_frontalface_alt.xml"))) |
||||||
|
{ |
||||||
|
cv::Mat img = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); |
||||||
|
ASSERT_FALSE(img.empty()); |
||||||
|
|
||||||
cv::gpu::CascadeClassifier_GPU cascade; |
cv::gpu::CascadeClassifier_GPU d_cascade; |
||||||
|
|
||||||
ASSERT_TRUE(cascade.load(perf::TestBase::getDataPath("gpu/perf/haarcascade_frontalface_alt.xml"))); |
ASSERT_TRUE(d_cascade.load(perf::TestBase::getDataPath(GetParam().second))); |
||||||
|
|
||||||
cv::gpu::GpuMat img(img_host); |
cv::gpu::GpuMat d_img(img); |
||||||
cv::gpu::GpuMat objects_buffer; |
cv::gpu::GpuMat d_objects_buffer; |
||||||
|
|
||||||
cascade.detectMultiScale(img, objects_buffer); |
d_cascade.detectMultiScale(d_img, d_objects_buffer); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cascade.detectMultiScale(img, objects_buffer); |
d_cascade.detectMultiScale(d_img, d_objects_buffer); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(ObjDetect, HaarClassifier, ALL_DEVICES); |
///////////////////////////////////////////////////////////////
|
||||||
|
// LBP cascade
|
||||||
|
|
||||||
//===================== LBP cascade ==========================//
|
PERF_TEST_P(ImageAndCascade, ObjDetect_LBPClassifier, |
||||||
GPU_PERF_TEST_1(LBPClassifier, cv::gpu::DeviceInfo) |
Values<pair_string>(make_pair("gpu/haarcascade/group_1_640x480_VGA.pgm", "gpu/lbpcascade/lbpcascade_frontalface.xml"))) |
||||||
{ |
{ |
||||||
cv::gpu::DeviceInfo devInfo = GetParam(); |
cv::Mat img = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); |
||||||
cv::gpu::setDevice(devInfo.deviceID()); |
ASSERT_FALSE(img.empty()); |
||||||
|
|
||||||
cv::Mat img_host = readImage("gpu/haarcascade/group_1_640x480_VGA.pgm", cv::IMREAD_GRAYSCALE); |
cv::gpu::CascadeClassifier_GPU d_cascade; |
||||||
ASSERT_FALSE(img_host.empty()); |
|
||||||
|
|
||||||
|
ASSERT_TRUE(d_cascade.load(perf::TestBase::getDataPath(GetParam().second))); |
||||||
|
|
||||||
|
cv::gpu::GpuMat d_img(img); |
||||||
|
cv::gpu::GpuMat d_gpu_rects; |
||||||
|
|
||||||
cv::gpu::GpuMat img(img_host); |
d_cascade.detectMultiScale(d_img, d_gpu_rects); |
||||||
cv::gpu::GpuMat gpu_rects; |
|
||||||
cv::gpu::CascadeClassifier_GPU cascade; |
|
||||||
ASSERT_TRUE(cascade.load(perf::TestBase::getDataPath("gpu/lbpcascade/lbpcascade_frontalface.xml"))); |
|
||||||
|
|
||||||
cascade.detectMultiScale(img, gpu_rects); |
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
cascade.detectMultiScale(img, gpu_rects); |
d_cascade.detectMultiScale(d_img, d_gpu_rects); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(ObjDetect, LBPClassifier, ALL_DEVICES); |
} // namespace
|
||||||
|
|
||||||
#endif |
|
||||||
|
Loading…
Reference in new issue