This source file includes following definitions.
- PARAM_TEST_CASE
 
- CUDA_TEST_P
 
- PARAM_TEST_CASE
 
- CUDA_TEST_P
 
- PARAM_TEST_CASE
 
- CUDA_TEST_P
 
- PARAM_TEST_CASE
 
- CUDA_TEST_P
 
#include "test_precomp.hpp"
#ifdef HAVE_CUDA
using namespace cvtest;
PARAM_TEST_CASE(HistEven, cv::cuda::DeviceInfo, cv::Size)
{
    cv::cuda::DeviceInfo devInfo;
    cv::Size size;
    virtual void SetUp()
    {
        devInfo = GET_PARAM(0);
        size = GET_PARAM(1);
        cv::cuda::setDevice(devInfo.deviceID());
    }
};
CUDA_TEST_P(HistEven, Accuracy)
{
    cv::Mat src = randomMat(size, CV_8UC1);
    int hbins = 30;
    float hranges[] = {50.0f, 200.0f};
    cv::cuda::GpuMat hist;
    cv::cuda::histEven(loadMat(src), hist, hbins, (int) hranges[0], (int) hranges[1]);
    cv::Mat hist_gold;
    int histSize[] = {hbins};
    const float* ranges[] = {hranges};
    int channels[] = {0};
    cv::calcHist(&src, 1, channels, cv::Mat(), hist_gold, 1, histSize, ranges);
    hist_gold = hist_gold.t();
    hist_gold.convertTo(hist_gold, CV_32S);
    EXPECT_MAT_NEAR(hist_gold, hist, 0.0);
}
INSTANTIATE_TEST_CASE_P(CUDA_ImgProc, HistEven, testing::Combine(
    ALL_DEVICES,
    DIFFERENT_SIZES));
PARAM_TEST_CASE(CalcHist, cv::cuda::DeviceInfo, cv::Size)
{
    cv::cuda::DeviceInfo devInfo;
    cv::Size size;
    virtual void SetUp()
    {
        devInfo = GET_PARAM(0);
        size = GET_PARAM(1);
        cv::cuda::setDevice(devInfo.deviceID());
    }
};
CUDA_TEST_P(CalcHist, Accuracy)
{
    cv::Mat src = randomMat(size, CV_8UC1);
    cv::cuda::GpuMat hist;
    cv::cuda::calcHist(loadMat(src), hist);
    cv::Mat hist_gold;
    const int hbins = 256;
    const float hranges[] = {0.0f, 256.0f};
    const int histSize[] = {hbins};
    const float* ranges[] = {hranges};
    const int channels[] = {0};
    cv::calcHist(&src, 1, channels, cv::Mat(), hist_gold, 1, histSize, ranges);
    hist_gold = hist_gold.reshape(1, 1);
    hist_gold.convertTo(hist_gold, CV_32S);
    EXPECT_MAT_NEAR(hist_gold, hist, 0.0);
}
INSTANTIATE_TEST_CASE_P(CUDA_ImgProc, CalcHist, testing::Combine(
    ALL_DEVICES,
    DIFFERENT_SIZES));
PARAM_TEST_CASE(EqualizeHist, cv::cuda::DeviceInfo, cv::Size)
{
    cv::cuda::DeviceInfo devInfo;
    cv::Size size;
    virtual void SetUp()
    {
        devInfo = GET_PARAM(0);
        size = GET_PARAM(1);
        cv::cuda::setDevice(devInfo.deviceID());
    }
};
CUDA_TEST_P(EqualizeHist, Accuracy)
{
    cv::Mat src = randomMat(size, CV_8UC1);
    cv::cuda::GpuMat dst;
    cv::cuda::equalizeHist(loadMat(src), dst);
    cv::Mat dst_gold;
    cv::equalizeHist(src, dst_gold);
    EXPECT_MAT_NEAR(dst_gold, dst, 3.0);
}
INSTANTIATE_TEST_CASE_P(CUDA_ImgProc, EqualizeHist, testing::Combine(
    ALL_DEVICES,
    DIFFERENT_SIZES));
namespace
{
    IMPLEMENT_PARAM_CLASS(ClipLimit, double)
}
PARAM_TEST_CASE(CLAHE, cv::cuda::DeviceInfo, cv::Size, ClipLimit)
{
    cv::cuda::DeviceInfo devInfo;
    cv::Size size;
    double clipLimit;
    virtual void SetUp()
    {
        devInfo = GET_PARAM(0);
        size = GET_PARAM(1);
        clipLimit = GET_PARAM(2);
        cv::cuda::setDevice(devInfo.deviceID());
    }
};
CUDA_TEST_P(CLAHE, Accuracy)
{
    cv::Mat src = randomMat(size, CV_8UC1);
    cv::Ptr<cv::cuda::CLAHE> clahe = cv::cuda::createCLAHE(clipLimit);
    cv::cuda::GpuMat dst;
    clahe->apply(loadMat(src), dst);
    cv::Ptr<cv::CLAHE> clahe_gold = cv::createCLAHE(clipLimit);
    cv::Mat dst_gold;
    clahe_gold->apply(src, dst_gold);
    ASSERT_MAT_NEAR(dst_gold, dst, 1.0);
}
INSTANTIATE_TEST_CASE_P(CUDA_ImgProc, CLAHE, testing::Combine(
    ALL_DEVICES,
    DIFFERENT_SIZES,
    testing::Values(0.0, 40.0)));
#endif