vendor: OpenCV 5.0.0 snapshot at 755e50675d97db9b7d449d8bd6b09888646f6c6e
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
#include "test_precomp.hpp"
|
||||
#include "opencv2/cann_call.hpp"
|
||||
|
||||
namespace opencv_test
|
||||
{
|
||||
namespace
|
||||
{
|
||||
|
||||
TEST(ASCENDC_KERNEL, THRESHOLD)
|
||||
{
|
||||
cv::cann::setDevice(DEVICE_ID);
|
||||
Mat cpuRet, npuRet;
|
||||
AscendMat npuImg, npuTmpMat;
|
||||
|
||||
// opencv do not support CV_8S, CV_32S, CV_16F
|
||||
// ascend do not support CV_16U, CV_64F
|
||||
uint8_t dtypes[] = {CV_8U, CV_16S, CV_32F};
|
||||
|
||||
for (uint i = 0; i <= 4; i++)
|
||||
{
|
||||
for (uint j = 0; j < sizeof(dtypes) / sizeof(dtypes[0]); j++)
|
||||
{
|
||||
double thresh = 90.5;
|
||||
double maxVal = 85.2;
|
||||
|
||||
Mat img = randomMat(10, 10, CV_MAKETYPE(dtypes[j], 3), 0.0f, 128.0f);
|
||||
npuImg.upload(img);
|
||||
npuTmpMat.create(npuImg.rows, npuImg.cols, npuImg.type());
|
||||
|
||||
cv::threshold(img, cpuRet, thresh, maxVal, i);
|
||||
ThresholdOpencvTilingData tiling;
|
||||
tiling.maxVal = maxVal;
|
||||
tiling.thresh = thresh;
|
||||
size_t totalBytes = img.rows * img.cols * img.channels();
|
||||
// AscendMat memory will be align to 32B, it's safe to set totalLengh a little bigger.
|
||||
tiling.totalLength = ((totalBytes + 32) & ~31);
|
||||
tiling.threshType = i;
|
||||
tiling.dtype = dtypes[j];
|
||||
kernel_launch(aclrtlaunch_threshold_opencv, AscendStream::Null(), tiling,
|
||||
npuImg.data.get(), npuTmpMat.data.get());
|
||||
|
||||
npuTmpMat.download(npuRet);
|
||||
EXPECT_MAT_NEAR(cpuRet, npuRet, 10.0f);
|
||||
}
|
||||
}
|
||||
|
||||
cv::cann::resetDevice();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace opencv_test
|
||||
Reference in New Issue
Block a user