feat: 切换后端至PaddleOCR-NCNN,切换工程为CMake
1.项目后端整体迁移至PaddleOCR-NCNN算法,已通过基本的兼容性测试 2.工程改为使用CMake组织,后续为了更好地兼容第三方库,不再提供QMake工程 3.重整权利声明文件,重整代码工程,确保最小化侵权风险 Log: 切换后端至PaddleOCR-NCNN,切换工程为CMake Change-Id: I4d5d2c5d37505a4a24b389b1a4c5d12f17bfa38c
This commit is contained in:
88
3rdparty/opencv-4.5.4/modules/gapi/perf/perf_bench.cpp
vendored
Normal file
88
3rdparty/opencv-4.5.4/modules/gapi/perf/perf_bench.cpp
vendored
Normal file
@ -0,0 +1,88 @@
|
||||
#include "perf_precomp.hpp"
|
||||
#include "../test/common/gapi_tests_common.hpp"
|
||||
|
||||
namespace opencv_test
|
||||
{
|
||||
|
||||
struct SobelEdgeDetector: public TestPerfParams<cv::Size> {};
|
||||
PERF_TEST_P_(SobelEdgeDetector, Fluid)
|
||||
{
|
||||
Size sz = GetParam();
|
||||
initMatsRandU(CV_8UC3, sz, CV_8UC3, false);
|
||||
|
||||
GMat in;
|
||||
GMat gx = gapi::Sobel(in, CV_32F, 1, 0);
|
||||
GMat gy = gapi::Sobel(in, CV_32F, 0, 1);
|
||||
GMat mag = gapi::sqrt(gapi::mul(gx, gx) + gapi::mul(gy, gy));
|
||||
GMat out = gapi::convertTo(mag, CV_8U);
|
||||
GComputation sobel(in, out);
|
||||
auto pkg = gapi::combine(gapi::core::fluid::kernels(),
|
||||
gapi::imgproc::fluid::kernels());
|
||||
auto cc = sobel.compile(cv::descr_of(in_mat1),
|
||||
cv::compile_args(cv::gapi::use_only{pkg}));
|
||||
cc(in_mat1, out_mat_gapi);
|
||||
|
||||
TEST_CYCLE()
|
||||
{
|
||||
cc(in_mat1, out_mat_gapi);
|
||||
}
|
||||
SANITY_CHECK_NOTHING();
|
||||
}
|
||||
PERF_TEST_P_(SobelEdgeDetector, OpenCV)
|
||||
{
|
||||
Size sz = GetParam();
|
||||
initMatsRandU(CV_8UC3, sz, CV_8UC3, false);
|
||||
|
||||
Mat gx, gy;
|
||||
Mat mag;
|
||||
auto cc = [&](const cv::Mat &in_mat, cv::Mat &out_mat) {
|
||||
using namespace cv;
|
||||
|
||||
Sobel(in_mat, gx, CV_32F, 1, 0);
|
||||
Sobel(in_mat, gy, CV_32F, 0, 1);
|
||||
sqrt(gx.mul(gx) + gy.mul(gy), mag);
|
||||
mag.convertTo(out_mat, CV_8U);
|
||||
};
|
||||
cc(in_mat1, out_mat_gapi);
|
||||
|
||||
TEST_CYCLE()
|
||||
{
|
||||
cc(in_mat1, out_mat_gapi);
|
||||
}
|
||||
SANITY_CHECK_NOTHING();
|
||||
}
|
||||
PERF_TEST_P_(SobelEdgeDetector, OpenCV_Smarter)
|
||||
{
|
||||
Size sz = GetParam();
|
||||
initMatsRandU(CV_8UC3, sz, CV_8UC3, false);
|
||||
|
||||
Mat gx, gy;
|
||||
Mat ggx, ggy;
|
||||
Mat sum;
|
||||
Mat mag;
|
||||
|
||||
auto cc = [&](const cv::Mat &in_mat, cv::Mat &out_mat) {
|
||||
cv::Sobel(in_mat, gx, CV_32F, 1, 0);
|
||||
cv::Sobel(in_mat, gy, CV_32F, 0, 1);
|
||||
cv::multiply(gx, gx, ggx);
|
||||
cv::multiply(gy, gy, ggy);
|
||||
cv::add(ggx, ggy, sum);
|
||||
cv::sqrt(sum, mag);
|
||||
mag.convertTo(out_mat, CV_8U);
|
||||
};
|
||||
cc(in_mat1, out_mat_gapi);
|
||||
|
||||
TEST_CYCLE()
|
||||
{
|
||||
cc(in_mat1, out_mat_gapi);
|
||||
}
|
||||
SANITY_CHECK_NOTHING();
|
||||
}
|
||||
INSTANTIATE_TEST_CASE_P(Benchmark, SobelEdgeDetector,
|
||||
Values(cv::Size(320, 240),
|
||||
cv::Size(640, 480),
|
||||
cv::Size(1280, 720),
|
||||
cv::Size(1920, 1080),
|
||||
cv::Size(3840, 2170)));
|
||||
|
||||
} // opencv_test
|
Reference in New Issue
Block a user