1 // This file is part of OpenCV project.
2 // It is subject to the license terms in the LICENSE file found in the top-level directory
3 // of this distribution and at http://opencv.org/license.html.
5 // Copyright (C) 2018-2019 Intel Corporation
8 #include "test_precomp.hpp"
15 TEST(GAPI_Scalar, Argument)
18 cv::Mat in_mat(sz, CV_8U);
19 cv::randn(in_mat, cv::Scalar::all(127), cv::Scalar::all(40.f));
21 cv::GComputationT<cv::GMat (cv::GMat, cv::GScalar)> mulS([](cv::GMat in, cv::GScalar c)
26 cv::Mat out_mat(sz, CV_8U);
27 mulS.apply(in_mat, cv::Scalar(2), out_mat);
29 cv::Mat reference = in_mat*2;
30 EXPECT_EQ(0, cv::countNonZero(cv::abs(out_mat - reference)));
33 TEST(GAPI_Scalar, ReturnValue)
35 const cv::Size sz(2, 2);
36 cv::Mat in_mat(sz, CV_8U, cv::Scalar(1));
38 cv::GComputationT<cv::GScalar (cv::GMat)> sum_of_sum([](cv::GMat in)
40 return cv::gapi::sum(in + in);
44 sum_of_sum.apply(in_mat, out);
49 TEST(GAPI_Scalar, TmpScalar)
51 const cv::Size sz(2, 2);
52 cv::Mat in_mat(sz, CV_8U, cv::Scalar(1));
54 cv::GComputationT<cv::GMat (cv::GMat)> mul_by_sum([](cv::GMat in)
56 return in * cv::gapi::sum(in);
59 cv::Mat out_mat(sz, CV_8U);
60 mul_by_sum.apply(in_mat, out_mat);
62 cv::Mat reference = cv::Mat(sz, CV_8U, cv::Scalar(4));
63 EXPECT_EQ(0, cv::countNonZero(cv::abs(out_mat - reference)));
66 TEST(GAPI_ScalarWithValue, Simple_Arithmetic_Pipeline)
69 GMat out = (in + 1) * 2;
70 cv::GComputation comp(in, out);
72 cv::Mat in_mat = cv::Mat::eye(3, 3, CV_8UC1);
73 cv::Mat ref_mat, out_mat;
75 ref_mat = (in_mat + 1) * 2;
76 comp.apply(in_mat, out_mat);
78 EXPECT_EQ(0, cv::countNonZero(out_mat != ref_mat));
81 TEST(GAPI_ScalarWithValue, GScalar_Initilization)
86 cv::GComputation comp(in, cv::gapi::mulC(in, s));
88 cv::Mat in_mat = cv::Mat::eye(3, 3, CV_8UC1);
89 cv::Mat ref_mat, out_mat;
90 cv::multiply(in_mat, sc, ref_mat, 1, CV_8UC1);
91 comp.apply(cv::gin(in_mat), cv::gout(out_mat));
93 EXPECT_EQ(0, cv::countNonZero(out_mat != ref_mat));
96 TEST(GAPI_ScalarWithValue, Constant_GScalar_In_Middle_Graph)
103 auto add_out = cv::gapi::addC(in1, in2);
104 cv::GComputation comp(cv::GIn(in1, in2), cv::GOut(cv::gapi::mulC(add_out, s)));
106 cv::Mat in_mat = cv::Mat::eye(3, 3, CV_8UC1);
107 cv::Scalar in_scalar(3);
109 cv::Mat ref_mat, out_mat, add_mat;
110 cv::add(in_mat, in_scalar, add_mat);
111 cv::multiply(add_mat, sc, ref_mat, 1, CV_8UC1);
112 comp.apply(cv::gin(in_mat, in_scalar), cv::gout(out_mat));
114 EXPECT_EQ(0, cv::countNonZero(out_mat != ref_mat));
117 } // namespace opencv_test