Files
opencv_contrib/modules/fastcv/src/thresh_dsp.cpp
T

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::