implemented gpu::copyMakeBorder for all border modes

This commit is contained in:
Vladislav Vinogradov
2011-09-21 07:02:45 +00:00
parent 8483f9ce40
commit 64119dd924
9 changed files with 256 additions and 164 deletions

View File

@@ -262,10 +262,11 @@ INSTANTIATE_TEST_CASE_P
///////////////////////////////////////////////////////////////////////////////////////////////////////
// copyMakeBorder
struct CopyMakeBorder : testing::TestWithParam< std::tr1::tuple<cv::gpu::DeviceInfo, int> >
struct CopyMakeBorder : testing::TestWithParam< std::tr1::tuple<cv::gpu::DeviceInfo, int, int> >
{
cv::gpu::DeviceInfo devInfo;
int type;
int borderType;
cv::Size size;
cv::Mat src;
@@ -281,6 +282,7 @@ struct CopyMakeBorder : testing::TestWithParam< std::tr1::tuple<cv::gpu::DeviceI
{
devInfo = std::tr1::get<0>(GetParam());
type = std::tr1::get<1>(GetParam());
borderType = std::tr1::get<2>(GetParam());
cv::gpu::setDevice(devInfo.deviceID());
@@ -296,12 +298,16 @@ struct CopyMakeBorder : testing::TestWithParam< std::tr1::tuple<cv::gpu::DeviceI
right = rng.uniform(1, 10);
val = cv::Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
cv::copyMakeBorder(src, dst_gold, top, botton, left, right, cv::BORDER_CONSTANT, val);
cv::copyMakeBorder(src, dst_gold, top, botton, left, right, borderType, val);
}
};
TEST_P(CopyMakeBorder, Accuracy)
{
static const char* borderTypes_str[] = {"BORDER_CONSTANT", "BORDER_REPLICATE", "BORDER_REFLECT", "BORDER_WRAP", "BORDER_REFLECT_101"};
const char* borderTypeStr = borderTypes_str[borderType];
PRINT_PARAM(devInfo);
PRINT_TYPE(type);
PRINT_PARAM(size);
@@ -309,6 +315,7 @@ TEST_P(CopyMakeBorder, Accuracy)
PRINT_PARAM(botton);
PRINT_PARAM(left);
PRINT_PARAM(right);
PRINT_PARAM(borderTypeStr);
PRINT_PARAM(val);
cv::Mat dst;
@@ -316,7 +323,7 @@ TEST_P(CopyMakeBorder, Accuracy)
ASSERT_NO_THROW(
cv::gpu::GpuMat gpuRes;
cv::gpu::copyMakeBorder(cv::gpu::GpuMat(src), gpuRes, top, botton, left, right, val);
cv::gpu::copyMakeBorder(cv::gpu::GpuMat(src), gpuRes, top, botton, left, right, borderType, val);
gpuRes.download(dst);
);
@@ -326,7 +333,8 @@ TEST_P(CopyMakeBorder, Accuracy)
INSTANTIATE_TEST_CASE_P(ImgProc, CopyMakeBorder, testing::Combine(
testing::ValuesIn(devices()),
testing::Values(CV_8UC1, CV_8UC4, CV_32SC1)));
testing::Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_16UC1, CV_16UC3, CV_16UC4, CV_16SC1, CV_16SC3, CV_16SC4, CV_32FC1, CV_32FC3, CV_32FC4),
testing::Values((int)cv::BORDER_REFLECT101, (int)cv::BORDER_REPLICATE, (int)cv::BORDER_CONSTANT, (int)cv::BORDER_REFLECT, (int)cv::BORDER_WRAP)));
///////////////////////////////////////////////////////////////////////////////////////////////////////
// warpAffine & warpPerspective