mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 23:33:05 +04:00
Merge pull request #21504 from smirnov-alexey:as/oak_infer
[GAPI] Support basic inference in OAK backend * Combined commit which enables basic inference and other extra capabilities of OAK backend * Remove unnecessary target options from the cmakelist
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
//
|
||||
// Copyright (C) 2022 Intel Corporation
|
||||
|
||||
#ifndef OPENCV_GAPI_OAK_INFER_HPP
|
||||
#define OPENCV_GAPI_OAK_INFER_HPP
|
||||
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
#include <array>
|
||||
#include <tuple>
|
||||
|
||||
#include <opencv2/gapi/opencv_includes.hpp>
|
||||
#include <opencv2/gapi/util/any.hpp>
|
||||
|
||||
#include <opencv2/core/cvdef.h> // GAPI_EXPORTS
|
||||
#include <opencv2/gapi/gkernel.hpp> // GKernelPackage
|
||||
|
||||
namespace cv {
|
||||
namespace gapi {
|
||||
namespace oak {
|
||||
|
||||
namespace detail {
|
||||
/**
|
||||
* @brief This structure contains description of inference parameters
|
||||
* which is specific to OAK models.
|
||||
*/
|
||||
struct ParamDesc {
|
||||
std::string blob_file;
|
||||
};
|
||||
} // namespace detail
|
||||
|
||||
/**
|
||||
* Contains description of inference parameters and kit of functions that
|
||||
* fill this parameters.
|
||||
*/
|
||||
template<typename Net> class Params {
|
||||
public:
|
||||
/** @brief Class constructor.
|
||||
|
||||
Constructs Params based on model information and sets default values for other
|
||||
inference description parameters.
|
||||
|
||||
@param model Path to model (.blob file)
|
||||
*/
|
||||
explicit Params(const std::string &model) {
|
||||
desc.blob_file = model;
|
||||
};
|
||||
|
||||
// BEGIN(G-API's network parametrization API)
|
||||
GBackend backend() const { return cv::gapi::oak::backend(); }
|
||||
std::string tag() const { return Net::tag(); }
|
||||
cv::util::any params() const { return { desc }; }
|
||||
// END(G-API's network parametrization API)
|
||||
|
||||
protected:
|
||||
detail::ParamDesc desc;
|
||||
};
|
||||
|
||||
} // namespace oak
|
||||
} // namespace gapi
|
||||
} // namespace cv
|
||||
|
||||
#endif // OPENCV_GAPI_OAK_INFER_HPP
|
||||
@@ -89,28 +89,55 @@ G_API_OP(GSobelXY, <GFrame(GFrame, const cv::Mat&, const cv::Mat&)>, "org.opencv
|
||||
}
|
||||
};
|
||||
|
||||
G_API_OP(GCopy, <GFrame(GFrame)>, "org.opencv.oak.copy") {
|
||||
static GFrameDesc outMeta(const GFrameDesc& in) {
|
||||
return in;
|
||||
}
|
||||
};
|
||||
|
||||
// FIXME: add documentation on operations below
|
||||
|
||||
GAPI_EXPORTS GArray<uint8_t> encode(const GFrame& in, const EncoderConfig&);
|
||||
|
||||
GAPI_EXPORTS GFrame sobelXY(const GFrame& in,
|
||||
const cv::Mat& hk,
|
||||
const cv::Mat& vk);
|
||||
|
||||
GAPI_EXPORTS GFrame copy(const GFrame& in);
|
||||
|
||||
// OAK backend & kernels ////////////////////////////////////////////////////////
|
||||
GAPI_EXPORTS cv::gapi::GBackend backend();
|
||||
GAPI_EXPORTS cv::gapi::GKernelPackage kernels();
|
||||
|
||||
// Camera object ///////////////////////////////////////////////////////////////
|
||||
|
||||
struct GAPI_EXPORTS ColorCameraParams {};
|
||||
struct GAPI_EXPORTS ColorCameraParams {
|
||||
/**
|
||||
* Format of the frame one gets from the camera
|
||||
*/
|
||||
bool interleaved = false;
|
||||
|
||||
// FIXME: extend
|
||||
enum class BoardSocket: int { RGB, BGR };
|
||||
|
||||
BoardSocket board_socket = BoardSocket::RGB;
|
||||
|
||||
// FIXME: extend
|
||||
enum class Resolution: int { THE_1080_P };
|
||||
|
||||
Resolution resolution = Resolution::THE_1080_P;
|
||||
};
|
||||
|
||||
class GAPI_EXPORTS ColorCamera: public cv::gapi::wip::IStreamSource {
|
||||
cv::MediaFrame m_dummy;
|
||||
ColorCameraParams m_params;
|
||||
|
||||
virtual bool pull(cv::gapi::wip::Data &data) override;
|
||||
virtual GMetaArg descr_of() const override;
|
||||
|
||||
public:
|
||||
ColorCamera();
|
||||
explicit ColorCamera(const ColorCameraParams& params);
|
||||
};
|
||||
|
||||
} // namespace oak
|
||||
|
||||
Reference in New Issue
Block a user