Path: blob/master/modules/gapi/src/api/kernels_core.cpp
16339 views
// This file is part of OpenCV project.1// It is subject to the license terms in the LICENSE file found in the top-level directory2// of this distribution and at http://opencv.org/license.html.3//4// Copyright (C) 2018 Intel Corporation567#include "precomp.hpp"89#include "opencv2/gapi/gcall.hpp"10#include "opencv2/gapi/gscalar.hpp"11#include "opencv2/gapi/gkernel.hpp"12#include "opencv2/gapi/core.hpp"1314#include <tuple>15#include <numeric>1617namespace cv { namespace gapi {1819GMat add(const GMat& src1, const GMat& src2, int dtype)20{21return core::GAdd::on(src1, src2, dtype);22}2324GMat addC(const GMat& src1, const GScalar& c, int dtype)25{26return core::GAddC::on(src1, c, dtype);27}2829GMat addC(const GScalar& c, const GMat& src1, int dtype)30{31return core::GAddC::on(src1, c, dtype);32}3334GMat sub(const GMat& src1, const GMat& src2, int dtype)35{36return core::GSub::on(src1, src2, dtype);37}3839GMat subC(const GMat& src1, const GScalar& c, int dtype)40{41return core::GSubC::on(src1, c, dtype);42}4344GMat subRC(const GScalar& c, const GMat& src, int dtype)45{46return core::GSubRC::on(c, src, dtype);47}4849GMat mul(const GMat& src1, const GMat& src2, double scale, int dtype)50{51return core::GMul::on(src1, src2, scale, dtype);52}5354GMat mulC(const GMat& src, double scale, int dtype)55{56return core::GMulCOld::on(src, scale, dtype);57}5859GMat mulC(const GMat& src, const GScalar& multiplier, int dtype)60{61return core::GMulC::on(src, multiplier, dtype);62}6364GMat mulC(const GScalar& multiplier, const GMat& src, int dtype)65{66return core::GMulC::on(src, multiplier, dtype);67}6869GMat div(const GMat& src1, const GMat& src2, double scale, int dtype)70{71return core::GDiv::on(src1, src2, scale, dtype);72}7374GMat divC(const GMat& src, const GScalar& divisor, double scale, int dtype)75{76return core::GDivC::on(src, divisor, scale, dtype);77}7879GMat divRC(const GScalar& divident, const GMat& src, double scale, int dtype)80{81return core::GDivRC::on(divident, src, scale, dtype);82}8384GScalar mean(const GMat& src)85{86return core::GMean::on(src);87}8889GMat mask(const GMat& src, const GMat& mask)90{91return core::GMask::on(src, mask);92}9394std::tuple<GMat, GMat> polarToCart(const GMat& magnitude, const GMat& angle,95bool angleInDegrees)96{97return core::GPolarToCart::on(magnitude, angle, angleInDegrees);98}99100std::tuple<GMat, GMat> cartToPolar(const GMat& x, const GMat& y,101bool angleInDegrees)102{103return core::GCartToPolar::on(x, y, angleInDegrees);104}105106GMat cmpGT(const GMat& src1, const GMat& src2)107{108return core::GCmpGT::on(src1, src2);109}110111GMat cmpLT(const GMat& src1, const GMat& src2)112{113return core::GCmpLT::on(src1, src2);114}115116GMat cmpGE(const GMat& src1, const GMat& src2)117{118return core::GCmpGE::on(src1, src2);119}120121GMat cmpLE(const GMat& src1, const GMat& src2)122{123return core::GCmpLE::on(src1, src2);124}125126GMat cmpEQ(const GMat& src1, const GMat& src2)127{128return core::GCmpEQ::on(src1, src2);129}130131GMat cmpNE(const GMat& src1, const GMat& src2)132{133return core::GCmpNE::on(src1, src2);134}135136GMat cmpGT(const GMat& src1, const GScalar& src2)137{138return core::GCmpGTScalar::on(src1, src2);139}140141GMat cmpLT(const GMat& src1, const GScalar& src2)142{143return core::GCmpLTScalar::on(src1, src2);144}145146GMat cmpGE(const GMat& src1, const GScalar& src2)147{148return core::GCmpGEScalar::on(src1, src2);149}150151GMat cmpLE(const GMat& src1, const GScalar& src2)152{153return core::GCmpLEScalar::on(src1, src2);154}155156GMat cmpEQ(const GMat& src1, const GScalar& src2)157{158return core::GCmpEQScalar::on(src1, src2);159}160161GMat cmpNE(const GMat& src1, const GScalar& src2)162{163return core::GCmpNEScalar::on(src1, src2);164}165166GMat min(const GMat& src1, const GMat& src2)167{168return core::GMin::on(src1, src2);169}170171GMat max(const GMat& src1, const GMat& src2)172{173return core::GMax::on(src1, src2);174}175176GMat absDiff(const GMat& src1, const GMat& src2)177{178return core::GAbsDiff::on(src1, src2);179}180181GMat absDiffC(const GMat& src, const GScalar& c)182{183return core::GAbsDiffC::on(src, c);184}185186GMat bitwise_and(const GMat& src1, const GMat& src2)187{188return core::GAnd::on(src1, src2);189}190191GMat bitwise_and(const GMat& src1, const GScalar& src2)192{193return core::GAndS::on(src1, src2);194}195196GMat bitwise_or(const GMat& src1, const GMat& src2)197{198return core::GOr::on(src1, src2);199}200201GMat bitwise_or(const GMat& src1, const GScalar& src2)202{203return core::GOrS::on(src1, src2);204}205206GMat bitwise_xor(const GMat& src1, const GMat& src2)207{208return core::GXor::on(src1, src2);209}210211GMat bitwise_xor(const GMat& src1, const GScalar& src2)212{213return core::GXorS::on(src1, src2);214}215216GMat bitwise_not(const GMat& src1)217{218return core::GNot::on(src1);219}220221GMat select(const GMat& src1, const GMat& src2, const GMat& mask)222{223return core::GSelect::on(src1, src2, mask);224}225226GScalar sum(const GMat& src)227{228return core::GSum::on(src);229}230231GMat addWeighted(const GMat& src1, double alpha, const GMat& src2, double beta, double gamma, int dtype)232{233return core::GAddW::on(src1, alpha, src2, beta, gamma, dtype);234}235236GScalar normL1(const GMat& src)237{238return core::GNormL1::on(src);239}240241GScalar normL2(const GMat& src)242{243return core::GNormL2::on(src);244}245246GScalar normInf(const GMat& src)247{248return core::GNormInf::on(src);249}250251std::tuple<GMat, GMat> integral(const GMat& src, int sdepth, int sqdepth)252{253return core::GIntegral::on(src, sdepth, sqdepth);254}255256GMat threshold(const GMat& src, const GScalar& thresh, const GScalar& maxval, int type)257{258GAPI_Assert(type != cv::THRESH_TRIANGLE && type != cv::THRESH_OTSU);259return core::GThreshold::on(src, thresh, maxval, type);260}261262std::tuple<GMat, GScalar> threshold(const GMat& src, const GScalar& maxval, int type)263{264GAPI_Assert(type == cv::THRESH_TRIANGLE || type == cv::THRESH_OTSU);265return core::GThresholdOT::on(src, maxval, type);266}267268GMat inRange(const GMat& src, const GScalar& threshLow, const GScalar& threshUp)269{270return core::GInRange::on(src, threshLow, threshUp);271}272273std::tuple<GMat, GMat, GMat> split3(const GMat& src)274{275return core::GSplit3::on(src);276}277278std::tuple<GMat, GMat, GMat, GMat> split4(const GMat& src)279{280return core::GSplit4::on(src);281}282283GMat merge3(const GMat& src1, const GMat& src2, const GMat& src3)284{285return core::GMerge3::on(src1, src2, src3);286}287288GMat merge4(const GMat& src1, const GMat& src2, const GMat& src3, const GMat& src4)289{290return core::GMerge4::on(src1, src2, src3, src4);291}292293GMat resize(const GMat& src, const Size& dsize, double fx, double fy, int interpolation)294{295return core::GResize::on(src, dsize, fx, fy, interpolation);296}297298GMat remap(const GMat& src, const Mat& map1, const Mat& map2,299int interpolation, int borderMode,300const Scalar& borderValue)301{302return core::GRemap::on(src, map1, map2, interpolation, borderMode, borderValue);303}304305GMat flip(const GMat& src, int flipCode)306{307return core::GFlip::on(src, flipCode);308}309310GMat crop(const GMat& src, const Rect& rect)311{312return core::GCrop::on(src, rect);313}314315GMat concatHor(const GMat& src1, const GMat& src2)316{317return core::GConcatHor::on(src1, src2);318}319320GMat concatHor(const std::vector<GMat>& v)321{322GAPI_Assert(v.size() >= 2);323return std::accumulate(v.begin()+1, v.end(), v[0], core::GConcatHor::on);324}325326GMat concatVert(const GMat& src1, const GMat& src2)327{328return core::GConcatVert::on(src1, src2);329}330331GMat concatVert(const std::vector<GMat>& v)332{333GAPI_Assert(v.size() >= 2);334return std::accumulate(v.begin()+1, v.end(), v[0], core::GConcatVert::on);335}336337GMat LUT(const GMat& src, const Mat& lut)338{339return core::GLUT::on(src, lut);340}341342GMat convertTo(const GMat& m, int rtype, double alpha, double beta)343{344return core::GConvertTo::on(m, rtype, alpha, beta);345}346347} //namespace gapi348} //namespace cv349350351