return empty_gopaque_desc();
}
};
+
+G_TYPED_KERNEL(GSizeMF, <GOpaque<Size>(GFrame)>, "org.opencv.streaming.sizeMF") {
+ static GOpaqueDesc outMeta(const GFrameDesc&) {
+ return empty_gopaque_desc();
+ }
+};
} // namespace streaming
//! @addtogroup gapi_math
@return Size (rectangle dimensions).
*/
GAPI_EXPORTS GOpaque<Size> size(const GOpaque<Rect>& r);
+
+/** @brief Gets dimensions from MediaFrame.
+
+@note Function textual ID is "org.opencv.streaming.sizeMF"
+
+@param src Input frame
+@return Size (frame dimensions).
+*/
+GAPI_EXPORTS GOpaque<Size> size(const GFrame& src);
} //namespace streaming
} //namespace gapi
} //namespace cv
return streaming::GSizeR::on(r);
}
+GOpaque<Size> streaming::size(const GFrame& src)
+{
+ return streaming::GSizeMF::on(src);
+}
+
} //namespace gapi
} //namespace cv
}
};
+GAPI_OCV_KERNEL(GCPUSizeMF, cv::gapi::streaming::GSizeMF)
+{
+ static void run(const cv::MediaFrame& in, cv::Size& out)
+ {
+ out = in.desc().size;
+ }
+};
+
cv::gapi::GKernelPackage cv::gapi::core::cpu::kernels()
{
static auto pkg = cv::gapi::kernels
, GCPUParseYolo
, GCPUSize
, GCPUSizeR
- >();
+ , GCPUSizeMF
+ >();
return pkg;
}
FIXTURE_API(float, float, int, std::pair<bool,int>), 4, confidence_threshold, nms_threshold, num_classes, dims_config)
GAPI_TEST_FIXTURE(SizeTest, initMatrixRandU, <>, 0)
GAPI_TEST_FIXTURE(SizeRTest, initNothing, <>, 0)
+GAPI_TEST_FIXTURE(SizeMFTest, initNothing, <>, 0)
} // opencv_test
#endif //OPENCV_GAPI_CORE_TESTS_HPP
EXPECT_EQ(out_sz, sz);
}
+namespace {
+ class TestMediaBGR final : public cv::MediaFrame::IAdapter {
+ cv::Mat m_mat;
+
+ public:
+ explicit TestMediaBGR(cv::Mat m)
+ : m_mat(m) {
+ }
+ cv::GFrameDesc meta() const override {
+ return cv::GFrameDesc{ cv::MediaFormat::BGR, cv::Size(m_mat.cols, m_mat.rows) };
+ }
+ cv::MediaFrame::View access(cv::MediaFrame::Access) override {
+ cv::MediaFrame::View::Ptrs pp = { m_mat.ptr(), nullptr, nullptr, nullptr };
+ cv::MediaFrame::View::Strides ss = { m_mat.step, 0u, 0u, 0u };
+ return cv::MediaFrame::View(std::move(pp), std::move(ss));
+ }
+ };
+};
+
+TEST_P(SizeMFTest, ParseTest)
+{
+ cv::Size out_sz;
+ cv::Mat bgr = cv::Mat::eye(sz.height, sz.width, CV_8UC3);
+ cv::MediaFrame frame = cv::MediaFrame::Create<TestMediaBGR>(bgr);
+
+ cv::GFrame in;
+ auto out = cv::gapi::streaming::size(in);
+ cv::GComputation c(cv::GIn(in), cv::GOut(out));
+ c.apply(cv::gin(frame), cv::gout(out_sz), getCompileArgs());
+
+ EXPECT_EQ(out_sz, sz);
+}
+
} // opencv_test
#endif //OPENCV_GAPI_CORE_TESTS_INL_HPP
cv::Size(640, 320)),
Values(-1),
Values(CORE_CPU)));
+
+INSTANTIATE_TEST_CASE_P(SizeMFTestCPU, SizeMFTest,
+ Combine(Values(CV_8UC1, CV_8UC3, CV_32FC1),
+ Values(cv::Size(32, 32),
+ cv::Size(640, 320)),
+ Values(-1),
+ Values(CORE_CPU)));
}