vendor: OpenCV 5.0.0 snapshot at 755e50675d97db9b7d449d8bd6b09888646f6c6e
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include "test_precomp.hpp"
|
||||
|
||||
namespace opencv_test { namespace {
|
||||
|
||||
TEST(ThresholdOtsuTest, accuracy)
|
||||
{
|
||||
applyTestTag(CV_TEST_TAG_FASTCV_SKIP_DSP);
|
||||
|
||||
//Initialize DSP
|
||||
int initStatus = cv::fastcv::dsp::fcvdspinit();
|
||||
ASSERT_EQ(initStatus, 0) << "Failed to initialize FastCV DSP";
|
||||
|
||||
cv::Mat src;
|
||||
src.allocator = cv::fastcv::getQcAllocator();
|
||||
cv::imread(cvtest::findDataFile("cv/detectors_descriptors_evaluation/planar/box_in_scene.png"), src, cv::IMREAD_GRAYSCALE);
|
||||
ASSERT_FALSE(src.empty()) << "Could not read the image file.";
|
||||
|
||||
cv::Mat dst;
|
||||
dst.allocator = cv::fastcv::getQcAllocator();
|
||||
|
||||
bool type = 0;
|
||||
|
||||
cv::fastcv::dsp::thresholdOtsu(src, dst, type);
|
||||
|
||||
// De-Initialize DSP
|
||||
cv::fastcv::dsp::fcvdspdeinit();
|
||||
|
||||
EXPECT_FALSE(dst.empty());
|
||||
EXPECT_EQ(src.size(), dst.size());
|
||||
|
||||
// Compare the result against the reference cv::threshold function with Otsu's method
|
||||
cv::Mat referenceDst;
|
||||
cv::threshold(src, referenceDst, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);
|
||||
|
||||
double maxDifference = 10.0;
|
||||
cv::Mat diff;
|
||||
cv::absdiff(dst, referenceDst, diff);
|
||||
double maxVal;
|
||||
cv::minMaxLoc(diff, nullptr, &maxVal);
|
||||
|
||||
EXPECT_LE(maxVal, maxDifference) << "The custom threshold result differs from the reference result by more than the acceptable threshold.";
|
||||
}
|
||||
|
||||
TEST(ThresholdOtsuTest, inPlaceAccuracy)
|
||||
{
|
||||
applyTestTag(CV_TEST_TAG_FASTCV_SKIP_DSP);
|
||||
|
||||
// Initialize DSP
|
||||
int initStatus = cv::fastcv::dsp::fcvdspinit();
|
||||
ASSERT_EQ(initStatus, 0) << "Failed to initialize FastCV DSP";
|
||||
|
||||
cv::Mat src;
|
||||
src.allocator = cv::fastcv::getQcAllocator();
|
||||
cv::imread(cvtest::findDataFile("cv/detectors_descriptors_evaluation/planar/box_in_scene.png"), src, cv::IMREAD_GRAYSCALE);
|
||||
ASSERT_FALSE(src.empty()) << "Could not read the image file.";
|
||||
|
||||
// Use the same buffer for in-place operation
|
||||
cv::Mat dst;
|
||||
dst.allocator = cv::fastcv::getQcAllocator();
|
||||
src.copyTo(dst);
|
||||
|
||||
bool type = false;
|
||||
|
||||
// Call the thresholdOtsu function for in-place operation
|
||||
cv::fastcv::dsp::thresholdOtsu(dst, dst, type);
|
||||
|
||||
// De-Initialize DSP
|
||||
cv::fastcv::dsp::fcvdspdeinit();
|
||||
|
||||
// Check if the output is not empty
|
||||
EXPECT_FALSE(dst.empty());
|
||||
EXPECT_EQ(src.size(), dst.size());
|
||||
|
||||
// Compare the result against the reference cv::threshold function with Otsu's method
|
||||
cv::Mat referenceDst;
|
||||
cv::threshold(src, referenceDst, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);
|
||||
|
||||
double maxDifference = 10.0;
|
||||
cv::Mat diff;
|
||||
cv::absdiff(dst, referenceDst, diff);
|
||||
double maxVal;
|
||||
cv::minMaxLoc(diff, nullptr, &maxVal);
|
||||
|
||||
EXPECT_LE(maxVal, maxDifference) << "The in-place threshold result differs from the reference result by more than the acceptable threshold.";
|
||||
}
|
||||
|
||||
}} // namespaces opencv_test, ::
|
||||
Reference in New Issue
Block a user