perf_compare.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "perf_precomp.hpp"
  2. namespace opencv_test
  3. {
  4. using namespace perf;
  5. CV_ENUM(CmpType, CMP_EQ, CMP_GT, CMP_GE, CMP_LT, CMP_LE, CMP_NE)
  6. typedef tuple<Size, MatType, CmpType> Size_MatType_CmpType_t;
  7. typedef perf::TestBaseWithParam<Size_MatType_CmpType_t> Size_MatType_CmpType;
  8. PERF_TEST_P( Size_MatType_CmpType, compare,
  9. testing::Combine(
  10. testing::Values(::perf::szVGA, ::perf::sz1080p),
  11. testing::Values(CV_8UC1, CV_8UC4, CV_8SC1, CV_16UC1, CV_16SC1, CV_32SC1, CV_32FC1),
  12. CmpType::all()
  13. )
  14. )
  15. {
  16. Size sz = get<0>(GetParam());
  17. int matType1 = get<1>(GetParam());
  18. CmpType cmpType = get<2>(GetParam());
  19. Mat src1(sz, matType1);
  20. Mat src2(sz, matType1);
  21. Mat dst(sz, CV_8UC(CV_MAT_CN(matType1)));
  22. declare.in(src1, src2, WARMUP_RNG).out(dst);
  23. TEST_CYCLE() cv::compare(src1, src2, dst, cmpType);
  24. SANITY_CHECK(dst);
  25. }
  26. PERF_TEST_P( Size_MatType_CmpType, compareScalar,
  27. testing::Combine(
  28. testing::Values(TYPICAL_MAT_SIZES),
  29. testing::Values(TYPICAL_MAT_TYPES),
  30. CmpType::all()
  31. )
  32. )
  33. {
  34. Size sz = get<0>(GetParam());
  35. int matType = get<1>(GetParam());
  36. CmpType cmpType = get<2>(GetParam());
  37. Mat src1(sz, matType);
  38. Scalar src2;
  39. Mat dst(sz, CV_8UC(CV_MAT_CN(matType)));
  40. declare.in(src1, src2, WARMUP_RNG).out(dst);
  41. int runs = (sz.width <= 640) ? 8 : 1;
  42. TEST_CYCLE_MULTIRUN(runs) cv::compare(src1, src2, dst, cmpType);
  43. SANITY_CHECK(dst);
  44. }
  45. } // namespace