vendor: OpenCV 5.0.0 snapshot at 755e50675d97db9b7d449d8bd6b09888646f6c6e

This commit is contained in:
Gitea Mirror Bot
2026-08-22 00:11:13 +08:00
commit 12022378a3
3872 changed files with 2513409 additions and 0 deletions
+333
View File
@@ -0,0 +1,333 @@
// 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 "perf_precomp.hpp"
#include "opencv2/cann_interface.hpp"
namespace opencv_test
{
namespace
{
#define TYPICAL_ASCEND_MAT_SIZES \
Values(::perf::sz1080p, ::perf::sz2K, ::perf::sz2160p, ::perf::sz4320p)
#define DVPP_ASCEND_MAT_SIZES Values(::perf::sz1080p, ::perf::sz2K, ::perf::sz2160p, ::perf::sz5MP)
#define DEF_PARAM_TEST(name, ...) \
typedef ::perf::TestBaseWithParam<testing::tuple<__VA_ARGS__>> name
DEF_PARAM_TEST(NPU, Size);
DEF_PARAM_TEST(CPU, Size);
PERF_TEST_P(NPU, MERGE, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC1);
Mat dst;
declare.in(mat, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
AscendMat ascendMat[3];
ascendMat[0].upload(mat);
ascendMat[1].upload(mat);
ascendMat[2].upload(mat);
TEST_CYCLE() { cv::cann::merge(&ascendMat[0], 3, dst); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MERGE, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC1);
Mat dst;
declare.in(mat, WARMUP_RNG);
Mat mats[3] = {mat, mat, mat};
TEST_CYCLE() { cv::merge(&mats[0], 3, dst); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, SPLIT, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
declare.in(mat, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
AscendMat ascendMat[3];
TEST_CYCLE() { cv::cann::split(mat, &ascendMat[0]); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, SPLIT, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
declare.in(mat, WARMUP_RNG);
Mat mats[3] = {mat, mat, mat};
TEST_CYCLE() { cv::split(mat, &mats[0]); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, TRANSPOSE, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::transpose(mat, dst); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, TRANSPOSE, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
TEST_CYCLE() { cv::transpose(mat, dst); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, FLIP, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::flip(mat, dst, -1); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, FLIP, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
TEST_CYCLE() { cv::flip(mat, dst, -1); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, ROTATE, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::rotate(mat, dst, 1); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, ROTATE, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
TEST_CYCLE() { cv::rotate(mat, dst, 1); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, CROP, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
Rect b(1, 2, 4, 4);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { AscendMat cropped_cann(mat, b); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, CROP, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
Rect b(1, 2, 4, 4);
TEST_CYCLE() { Mat cropped_cv(mat, b); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, CROP_OVERLOAD, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
Rect b(1, 2, 4, 4);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::crop(mat, b); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, RESIZE, DVPP_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
Size dsize = Size(256, 256);
TEST_CYCLE_N(10) { cv::resize(mat, dst, dsize, 0, 0, 1); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, RESIZE, DVPP_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_32FC3);
AscendMat dst;
AscendMat src;
src.upload(mat);
declare.in(mat, WARMUP_RNG);
Size dsize = Size(256, 256);
TEST_CYCLE_N(10) { cv::cann::resize(src, dst, dsize, 0, 0, 3); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, THRESHOLD, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_32FC3);
AscendMat dst;
AscendMat src;
src.upload(mat);
declare.in(mat, WARMUP_RNG);
TEST_CYCLE_N(10) { cv::cann::threshold(src, dst, 100.0, 255.0, cv::THRESH_BINARY); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, THRESHOLD, TYPICAL_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_32FC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
TEST_CYCLE_N(10) { cv::threshold(mat, dst, 100.0, 255.0, cv::THRESH_BINARY); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, RESIZE_INTER_NEAREST, DVPP_ASCEND_MAT_SIZES)
{
Mat mat(GET_PARAM(0), CV_8UC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
Size dsize = Size(256, 256);
TEST_CYCLE_N(10) { cv::cann::resize(mat, dst, dsize, 0, 0, 0); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, COPY_MAKE_BORDER, DVPP_ASCEND_MAT_SIZES)
{
Mat resized_cv, checker, cpuOpRet, cpuMat(GET_PARAM(0), CV_8UC3);
declare.in(cpuMat, WARMUP_RNG);
int top, bottom, left, right;
top = (int)(20);
bottom = top;
left = (int)(20);
right = left;
int borderType = 1;
float scalarV[3] = {0, 0, 255};
Scalar value = {scalarV[0], scalarV[1], scalarV[2]};
TEST_CYCLE_N(10)
{
cv::cann::copyMakeBorder(cpuMat, checker, top, bottom, left, right, borderType, value);
}
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, COPY_MAKE_BORDER, DVPP_ASCEND_MAT_SIZES)
{
Mat resized_cv, checker, cpuOpRet, cpuMat(GET_PARAM(0), CV_8UC3);
declare.in(cpuMat, WARMUP_RNG);
int top, bottom, left, right;
top = (int)(20);
bottom = top;
left = (int)(20);
right = left;
int borderType = 1;
float scalarV[3] = {0, 0, 255};
Scalar value = {scalarV[0], scalarV[1], scalarV[2]};
TEST_CYCLE_N(10)
{
cv::copyMakeBorder(cpuMat, checker, top, bottom, left, right, borderType, value);
}
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, CROP_RESIZE_MAKE_BORDER, DVPP_ASCEND_MAT_SIZES)
{
Size size = GET_PARAM(0);
Mat resized_cv, checker, cpuOpRet, cpuMat(size, CV_8UC3);
declare.in(cpuMat, WARMUP_RNG);
const Rect b(1, 0, size.width / 2, size.height);
Size dsize = Size(size.width / 4, size.height / 2);
int top, left;
top = (int)(20);
left = (int)(20);
int borderType = 0;
float scalarV[3] = {1, 1, 1};
Scalar value = {scalarV[0], scalarV[1], scalarV[2]};
TEST_CYCLE_N(10)
{
cv::cann::cropResizeMakeBorder(cpuMat, checker, b, dsize, 0, 0, 1, top, left, borderType,
value);
}
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, CROP_RESIZE_MAKE_BORDER, DVPP_ASCEND_MAT_SIZES)
{
Size size = GET_PARAM(0);
Mat resized_cv, checker, cpuOpRet, cpuMat(size, CV_8UC3);
declare.in(cpuMat, WARMUP_RNG);
const Rect b(1, 0, size.width / 2, size.height);
Size dsize = Size(size.width / 4, size.height / 2);
int top, bottom, left, right;
top = (int)(20);
bottom = 0;
left = (int)(20);
right = 0;
int borderType = 0;
float scalarV[3] = {1, 1, 1};
Scalar value = {scalarV[0], scalarV[1], scalarV[2]};
TEST_CYCLE_N(10)
{
Mat cropped_cv(cpuMat, b);
cv::resize(cropped_cv, resized_cv, dsize, 0, 0, 1);
cv::copyMakeBorder(resized_cv, cpuOpRet, top, bottom, left, right, borderType, value);
}
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, CROP_RESIZE, DVPP_ASCEND_MAT_SIZES)
{
Size size = GET_PARAM(0);
Mat resized_cv, checker, cpuOpRet, cpuMat(size, CV_8UC3);
declare.in(cpuMat, WARMUP_RNG);
const Rect b(1, 0, size.width / 2, size.height);
Size dsize = Size(size.width / 4, size.height / 2);
TEST_CYCLE_N(10) { cv::cann::cropResize(cpuMat, checker, b, dsize, 0, 0, 1); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, CROP_RESIZE, DVPP_ASCEND_MAT_SIZES)
{
Size size = GET_PARAM(0);
Mat resized_cv, checker, cpuOpRet, cpuMat(size, CV_8UC3);
declare.in(cpuMat, WARMUP_RNG);
const Rect b(1, 0, size.width / 2, size.height);
Size dsize = Size(size.width / 4, size.height / 2);
TEST_CYCLE_N(10)
{
Mat cropped_cv(cpuMat, b);
cv::resize(cropped_cv, resized_cv, dsize, 0, 0, 1);
}
SANITY_CHECK_NOTHING();
}
} // namespace
} // namespace opencv_test
+69
View File
@@ -0,0 +1,69 @@
// 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 "perf_precomp.hpp"
#include "opencv2/cann_interface.hpp"
namespace opencv_test
{
namespace
{
#define CVT_COLORS_3 \
Values(COLOR_BGR2BGRA, COLOR_BGRA2BGR, COLOR_BGR2RGBA, COLOR_RGBA2BGR, COLOR_BGR2RGB, \
COLOR_BGRA2RGBA, COLOR_BGR2GRAY, COLOR_BGRA2GRAY, COLOR_RGBA2GRAY, COLOR_BGR2XYZ, \
COLOR_RGB2XYZ, COLOR_XYZ2BGR, COLOR_XYZ2RGB, COLOR_BGR2YCrCb, COLOR_RGB2YCrCb, \
COLOR_YCrCb2BGR, COLOR_YCrCb2RGB, COLOR_BGR2YUV, COLOR_RGB2YUV, COLOR_YUV2BGR, \
COLOR_YUV2RGB)
#define CVT_COLORS_1 Values(COLOR_GRAY2BGR, COLOR_GRAY2BGRA)
#define TYPICAL_ASCEND_MAT_SIZES \
Values(::perf::sz1080p, ::perf::sz2K)
#define DEF_PARAM_TEST(name, ...) \
typedef ::perf::TestBaseWithParam<testing::tuple<__VA_ARGS__>> name
DEF_PARAM_TEST(NPU, Size, ColorConversionCodes);
DEF_PARAM_TEST(CPU, Size, ColorConversionCodes);
PERF_TEST_P(NPU, CVT_COLOR_3, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, CVT_COLORS_3))
{
Mat mat(GET_PARAM(0), CV_32FC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::cvtColor(mat, dst, GET_PARAM(1)); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, CVT_COLOR_3, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, CVT_COLORS_3))
{
Mat mat(GET_PARAM(0), CV_32FC3);
Mat dst;
declare.in(mat, WARMUP_RNG);
TEST_CYCLE() { cv::cvtColor(mat, dst, GET_PARAM(1)); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, CVT_COLOR_1, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, CVT_COLORS_1))
{
Mat mat(GET_PARAM(0), CV_32FC1);
Mat dst;
declare.in(mat, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::cvtColor(mat, dst, GET_PARAM(1)); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, CVT_COLOR_1, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, CVT_COLORS_1))
{
Mat mat(GET_PARAM(0), CV_32FC1);
Mat dst;
declare.in(mat, WARMUP_RNG);
TEST_CYCLE() { cv::cvtColor(mat, dst, GET_PARAM(1)); }
SANITY_CHECK_NOTHING();
}
} // namespace
} // namespace opencv_test
@@ -0,0 +1,231 @@
// 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 "perf_precomp.hpp"
#include "opencv2/cann_interface.hpp"
namespace opencv_test
{
namespace
{
#define ARITHM_MAT_DEPTH Values(CV_32S, CV_32SC3)
#define TYPICAL_ASCEND_MAT_SIZES \
Values(::perf::sz1080p, ::perf::sz2K, ::perf::sz2160p, ::perf::sz4320p)
#define DEF_PARAM_TEST(name, ...) \
typedef ::perf::TestBaseWithParam<testing::tuple<__VA_ARGS__>> name
DEF_PARAM_TEST(NPU, Size, int);
DEF_PARAM_TEST(CPU, Size, int);
PERF_TEST_P(NPU, MAT_ADD_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::add(mat1, mat2, dst, noArray(), -1); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MAT_ADD_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
TEST_CYCLE() { cv::add(mat1, mat2, dst, noArray(), -1); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, MAT_SUB_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::subtract(mat1, mat2, dst, noArray(), -1); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MAT_SUB_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
TEST_CYCLE() { cv::subtract(mat1, mat2, dst, noArray(), -1); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, MAT_MUL_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::multiply(mat1, mat2, dst, 1, -1); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MAT_MUL_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
TEST_CYCLE() { cv::multiply(mat1, mat2, dst, 1, -1); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, MAT_DIV_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::divide(mat1, mat2, dst, 1, -1); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MAT_DIV_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
TEST_CYCLE() { cv::divide(mat1, mat2, dst, 1, -1); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, MAT_BITWISE_AND_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::bitwise_and(mat1, mat2, dst, noArray()); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MAT_BITWISE_AND_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
TEST_CYCLE() { cv::bitwise_and(mat1, mat2, dst, noArray()); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, MAT_BITWISE_OR_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::bitwise_or(mat1, mat2, dst, noArray()); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MAT_BITWISE_OR_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
TEST_CYCLE() { cv::bitwise_or(mat1, mat2, dst, noArray()); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, MAT_BITWISE_XOR_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::bitwise_xor(mat1, mat2, dst, noArray()); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MAT_BITWISE_XOR_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat1(GET_PARAM(0), GET_PARAM(1));
Mat mat2(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat1, WARMUP_RNG);
declare.in(mat2, WARMUP_RNG);
TEST_CYCLE() { cv::bitwise_xor(mat1, mat2, dst, noArray()); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, MAT_BITWISE_NOT_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat, WARMUP_RNG);
cv::cann::setDevice(DEVICE_ID);
TEST_CYCLE() { cv::cann::bitwise_not(mat, dst, noArray()); }
cv::cann::resetDevice();
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, MAT_BITWISE_NOT_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH))
{
Mat mat(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat, WARMUP_RNG);
TEST_CYCLE() { cv::bitwise_not(mat, dst, noArray()); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(NPU, THRESHOLD_ASCENDC, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, Values(CV_8U, CV_16S, CV_32F)))
{
Mat mat(GET_PARAM(0), GET_PARAM(1));
AscendMat dst;
AscendMat src;
src.upload(mat);
declare.in(mat, WARMUP_RNG);
TEST_CYCLE_N(10) { cv::cann::threshold(src, dst, 100.0, 255.0, cv::THRESH_BINARY); }
SANITY_CHECK_NOTHING();
}
PERF_TEST_P(CPU, THRESHOLD, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, Values(CV_8U, CV_16S, CV_32F)))
{
Mat mat(GET_PARAM(0), GET_PARAM(1));
Mat dst;
declare.in(mat, WARMUP_RNG);
TEST_CYCLE_N(10) { cv::threshold(mat, dst, 100.0, 255.0, cv::THRESH_BINARY); }
SANITY_CHECK_NOTHING();
}
} // namespace
} // namespace opencv_test
+33
View File
@@ -0,0 +1,33 @@
// 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 "perf_precomp.hpp"
#include "opencv2/cann_interface.hpp"
using namespace perf;
class CannEnvironment : public ::testing::Environment
{
public:
virtual ~CannEnvironment() = default;
virtual void SetUp() CV_OVERRIDE
{
initAcl();
cv::cann::setDevice(DEVICE_ID);
initDvpp();
}
virtual void TearDown() CV_OVERRIDE
{
finalizeAcl();
cv::cann::resetDevice();
finalizeDvpp();
}
};
static void initTests()
{
CannEnvironment* cannEnv = new CannEnvironment();
::testing::AddGlobalTestEnvironment(cannEnv);
}
CV_PERF_TEST_MAIN("cannops", initTests())
+19
View File
@@ -0,0 +1,19 @@
// 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.
#ifndef __OPENCV_PERF_PRECOMP_HPP__
#define __OPENCV_PERF_PRECOMP_HPP__
#include "opencv2/ts.hpp"
#include "opencv2/ts/ts_perf.hpp"
#include "opencv2/cann.hpp"
#define DEVICE_ID 0
using namespace perf;
using namespace testing;
using namespace cv;
using namespace cv::cann;
#endif