Path: blob/master/modules/gapi/test/gapi_smoke_test.cpp
16337 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 "test_precomp.hpp"89namespace opencv_test10{1112TEST(GAPI, Mat_Create_NoLink)13{14cv::Mat m1;15cv::Mat m2 = m1;16m2.create(32, 32, CV_8U);1718EXPECT_NE(m1.rows, m2.rows);19EXPECT_NE(m1.cols, m2.cols);20EXPECT_NE(m1.data, m2.data);21}2223TEST(GAPI, Mat_Recreate)24{25cv::Mat m1 = cv::Mat::zeros(480, 640, CV_8U);26m1.at<uchar>(0, 0) = 128;27cv::Mat m2 = m1;2829EXPECT_EQ(m1.rows, m2.rows);30EXPECT_EQ(m1.cols, m2.cols);31EXPECT_EQ(m1.data, m2.data);32EXPECT_EQ(m1.at<uchar>(0, 0), m2.at<uchar>(0, 0));3334// Calling "create" with the same meta is NOOP - both m1 and m2 are the same35m1.create(480, 640, CV_8U);36EXPECT_EQ(m1.rows, m2.rows);37EXPECT_EQ(m1.cols, m2.cols);38EXPECT_EQ(m1.data, m2.data);39EXPECT_EQ(m1.at<uchar>(0, 0), m2.at<uchar>(0, 0));4041// Calling "create" on m2 with different meta doesn't update original m142// Now m1 and m2 are distinct43m2.create(720, 1280, CV_8U);44m2.at<uchar>(0, 0) = 64; // Initialize 0,0 element since m2 is a new buffer45EXPECT_NE(m1.rows, m2.rows);46EXPECT_NE(m1.cols, m2.cols);47EXPECT_NE(m1.data, m2.data);48EXPECT_NE(m1.at<uchar>(0, 0), m2.at<uchar>(0, 0));4950// What if a Mat is created from handle?51uchar data[] = {5232, 0, 0,530, 0, 0,540, 0, 055};56cv::Mat m3(3, 3, CV_8U, data);57cv::Mat m4 = m3;58EXPECT_EQ(m3.rows, m4.rows);59EXPECT_EQ(m3.cols, m4.cols);60EXPECT_EQ(m3.data, m4.data);61EXPECT_EQ(data, m3.data);62EXPECT_EQ(data, m4.data);63EXPECT_EQ(m3.at<uchar>(0, 0), m4.at<uchar>(0, 0));6465// cv::Mat::create must be NOOP if we don't change the meta,66// even if the origianl mat is created from handle.67m4.create(3, 3, CV_8U);68EXPECT_EQ(m3.rows, m4.rows);69EXPECT_EQ(m3.cols, m4.cols);70EXPECT_EQ(m3.data, m4.data);71EXPECT_EQ(data, m3.data);72EXPECT_EQ(data, m4.data);73EXPECT_EQ(m3.at<uchar>(0, 0), m4.at<uchar>(0, 0));74}7576TEST(GAPI, EmptyOutMat)77{78cv::Mat in_mat = cv::Mat(480, 640, CV_8U, cv::Scalar(64));7980cv::GComputation cc([]()81{82cv::GMat in;83cv::GMat out = in + in;84return cv::GComputation(in, out);85});8687cv::Mat out;88cc.apply(in_mat, out);8990EXPECT_EQ(640, out.cols);91EXPECT_EQ(480, out.rows);92EXPECT_EQ(CV_8U, out.type());93EXPECT_EQ(0, cv::countNonZero(out - (in_mat+in_mat)));94}9596}979899