55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
/*
|
|
* Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include "precomp.hpp"
|
|
|
|
namespace cv {
|
|
namespace fastcv {
|
|
namespace dsp {
|
|
|
|
void thresholdOtsu(InputArray _src, OutputArray _dst, bool type)
|
|
{
|
|
CV_Assert(
|
|
!_src.empty() &&
|
|
_src.type() == CV_8UC1 &&
|
|
IS_FASTCV_ALLOCATED(_src.getMat())
|
|
);
|
|
|
|
CV_Assert((_src.step() * _src.rows()) > MIN_REMOTE_BUF_SIZE);
|
|
CV_Assert(_src.cols() % 8 == 0);
|
|
CV_Assert(_src.step() % 8 == 0);
|
|
|
|
Mat src = _src.getMat();
|
|
CV_Assert(((uintptr_t)src.data & 0x7) == 0);
|
|
|
|
_dst.create(_src.size(), CV_8UC1);
|
|
CV_Assert(_dst.step() % 8 == 0);
|
|
CV_Assert(_dst.cols() % 8 == 0);
|
|
Mat dst = _dst.getMat();
|
|
|
|
// Check if dst is allocated by the QcAllocator
|
|
CV_Assert(IS_FASTCV_ALLOCATED(dst));
|
|
CV_Assert(((uintptr_t)dst.data & 0x7) == 0);
|
|
|
|
if (src.data == dst.data) {
|
|
CV_Assert(src.step == dst.step);
|
|
}
|
|
|
|
// Check DSP initialization status and initialize if needed
|
|
FASTCV_CHECK_DSP_INIT();
|
|
|
|
fcvThreshType threshType;
|
|
|
|
if (type)
|
|
threshType = FCV_THRESH_BINARY_INV;
|
|
else
|
|
threshType = FCV_THRESH_BINARY;
|
|
|
|
fcvFilterThresholdOtsuu8Q(src.data, src.cols, src.rows, src.step, dst.data, dst.step, threshType);
|
|
}
|
|
|
|
} // dsp::
|
|
} // fastcv::
|
|
} // cv::
|