vendor: OpenCV 5.0.0 snapshot at 755e50675d97db9b7d449d8bd6b09888646f6c6e
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#include "test_precomp.hpp"
|
||||
|
||||
#define TEST_CASE_NAME CV_Quality_BRISQUE
|
||||
|
||||
namespace opencv_test
|
||||
{
|
||||
namespace quality_test
|
||||
{
|
||||
|
||||
// brisque per channel
|
||||
const cv::Scalar
|
||||
BRISQUE_EXPECTED_1 = { 31.866388320922852 } // testfile_1a
|
||||
, BRISQUE_EXPECTED_2 = { 9.7544803619384766 } // testfile 2a
|
||||
;
|
||||
|
||||
// default model and range file names
|
||||
// opencv tests must be installed (cmake var: INSTALL_TESTS), or BRISQUE tests will be skipped
|
||||
static const char* MODEL_FNAME = "brisque_model_live.yml";
|
||||
static const char* RANGE_FNAME = "brisque_range_live.yml";
|
||||
|
||||
// instantiates a brisque object for testing
|
||||
inline cv::Ptr<quality::QualityBRISQUE> create_brisque()
|
||||
{
|
||||
const auto model = cvtest::findDataFile(MODEL_FNAME, false);
|
||||
const auto range = cvtest::findDataFile(RANGE_FNAME, false);
|
||||
return quality::QualityBRISQUE::create(model, range);
|
||||
}
|
||||
|
||||
// static method
|
||||
TEST(TEST_CASE_NAME, static_ )
|
||||
{
|
||||
quality_expect_near(
|
||||
quality::QualityBRISQUE::compute(
|
||||
get_testfile_1a()
|
||||
, cvtest::findDataFile(MODEL_FNAME, false)
|
||||
, cvtest::findDataFile(RANGE_FNAME, false)
|
||||
)
|
||||
, BRISQUE_EXPECTED_1
|
||||
);
|
||||
}
|
||||
|
||||
// single channel, instance method, with and without opencl
|
||||
TEST(TEST_CASE_NAME, single_channel )
|
||||
{
|
||||
auto fn = []() { quality_test(create_brisque(), get_testfile_1a(), BRISQUE_EXPECTED_1, false, true ); };
|
||||
OCL_OFF( fn() );
|
||||
OCL_ON( fn() );
|
||||
}
|
||||
|
||||
// multi-channel
|
||||
TEST(TEST_CASE_NAME, multi_channel)
|
||||
{
|
||||
quality_test(create_brisque(), get_testfile_2a(), BRISQUE_EXPECTED_2, false, true);
|
||||
}
|
||||
|
||||
// check brisque model/range persistence
|
||||
TEST(TEST_CASE_NAME, model_persistence )
|
||||
{
|
||||
auto ptr = create_brisque();
|
||||
auto fn = [&ptr]() { quality_test(ptr, get_testfile_1a(), BRISQUE_EXPECTED_1, false, true); };
|
||||
fn();
|
||||
fn(); // model/range should persist with brisque ptr through multiple invocations
|
||||
}
|
||||
|
||||
// check compute features interface method
|
||||
TEST(TEST_CASE_NAME, compute_features)
|
||||
{
|
||||
auto ptr = create_brisque();
|
||||
cv::Mat features;
|
||||
ptr->computeFeatures(get_testfile_1a(), features);
|
||||
|
||||
EXPECT_EQ(features.rows, 1);
|
||||
EXPECT_EQ(features.cols, 36);
|
||||
}
|
||||
|
||||
/*
|
||||
// internal a/b test
|
||||
TEST(TEST_CASE_NAME, performance)
|
||||
{
|
||||
auto ref = get_testfile_1a();
|
||||
auto alg = create_brisque();
|
||||
|
||||
quality_performance_test("BRISQUE", [&]() { alg->compute(ref); });
|
||||
}
|
||||
*/
|
||||
}
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user