Path: blob/master/modules/imgproc/perf/perf_distanceTransform.cpp
16344 views
// This file is part of OpenCV project.1// It is subject to the license terms in the LICENSE file found in the top-level directory2// of this distribution and at http://opencv.org/license.html.3#include "perf_precomp.hpp"45namespace opencv_test {67CV_ENUM(DistanceType, DIST_L1, DIST_L2 , DIST_C)8CV_ENUM(MaskSize, DIST_MASK_3, DIST_MASK_5, DIST_MASK_PRECISE)9CV_ENUM(DstType, CV_8U, CV_32F)10CV_ENUM(LabelType, DIST_LABEL_CCOMP, DIST_LABEL_PIXEL)1112typedef tuple<Size, DistanceType, MaskSize, DstType> SrcSize_DistType_MaskSize_DstType;13typedef tuple<Size, DistanceType, MaskSize, LabelType> SrcSize_DistType_MaskSize_LabelType;14typedef perf::TestBaseWithParam<SrcSize_DistType_MaskSize_DstType> DistanceTransform_Test;15typedef perf::TestBaseWithParam<SrcSize_DistType_MaskSize_LabelType> DistanceTransform_NeedLabels_Test;1617PERF_TEST_P(DistanceTransform_Test, distanceTransform,18testing::Combine(19testing::Values(cv::Size(640, 480), cv::Size(800, 600), cv::Size(1024, 768), cv::Size(1280, 1024)),20DistanceType::all(),21MaskSize::all(),22DstType::all()23)24)25{26Size srcSize = get<0>(GetParam());27int distanceType = get<1>(GetParam());28int maskSize = get<2>(GetParam());29int dstType = get<3>(GetParam());3031Mat src(srcSize, CV_8U);32Mat dst(srcSize, dstType);3334declare35.in(src, WARMUP_RNG)36.out(dst, WARMUP_RNG)37.time(30);3839TEST_CYCLE() distanceTransform( src, dst, distanceType, maskSize, dstType);4041double eps = 2e-4;4243SANITY_CHECK(dst, eps);44}4546PERF_TEST_P(DistanceTransform_NeedLabels_Test, distanceTransform_NeedLabels,47testing::Combine(48testing::Values(cv::Size(640, 480), cv::Size(800, 600), cv::Size(1024, 768), cv::Size(1280, 1024)),49DistanceType::all(),50MaskSize::all(),51LabelType::all()52)53)54{55Size srcSize = get<0>(GetParam());56int distanceType = get<1>(GetParam());57int maskSize = get<2>(GetParam());58int labelType = get<3>(GetParam());5960Mat src(srcSize, CV_8U);61Mat label(srcSize, CV_32S);62Mat dst(srcSize, CV_32F);6364declare65.in(src, WARMUP_RNG)66.out(label, WARMUP_RNG)67.out(dst, WARMUP_RNG)68.time(30);6970TEST_CYCLE() distanceTransform( src, dst, label, distanceType, maskSize, labelType);7172double eps = 2e-4;7374SANITY_CHECK(label, eps);75SANITY_CHECK(dst, eps);76}7778} // namespace798081