#![allow(
unused_parens,
clippy::excessive_precision,
clippy::missing_safety_doc,
clippy::should_implement_trait,
clippy::too_many_arguments,
clippy::unused_unit,
clippy::let_unit_value,
clippy::derive_partial_eq_without_eq,
)]
//! \defgroup gapi G-API framework
//! # G-API Main Classes
//! # G-API Data Types
//! # G-API Metadata Descriptors
//! # G-API Standard Backends
//! # G-API Graph Compilation Arguments
//! # G-API Serialization functionality
use crate::{mod_prelude::*, core, sys, types};
pub mod prelude {
pub use { super::anyTraitConst, super::anyTrait, super::TextTraitConst, super::TextTrait, super::ImageTraitConst, super::ImageTrait, super::PolyTraitConst, super::PolyTrait, super::GCompileArgTraitConst, super::GCompileArgTrait, super::GMatTraitConst, super::GMatTrait, super::GMatPTraitConst, super::GMatPTrait, super::GMatDescTraitConst, super::GMatDescTrait, super::GScalarTraitConst, super::GScalarTrait, super::GScalarDescTraitConst, super::GScalarDescTrait, super::GArrayDescTraitConst, super::GArrayDescTrait, super::GArrayUTraitConst, super::GArrayUTrait, super::GOpaqueDescTraitConst, super::GOpaqueDescTrait, super::GOpaqueUTraitConst, super::GOpaqueUTrait, super::GFrameTraitConst, super::GFrameTrait, super::GFrameDescTraitConst, super::GFrameDescTrait, super::ScalarTraitConst, super::ScalarTrait, super::MediaFrameTraitConst, super::MediaFrameTrait, super::MediaFrame_ViewTraitConst, super::MediaFrame_ViewTrait, super::MediaFrame_IAdapterConst, super::MediaFrame_IAdapter, super::RMat_ViewTraitConst, super::RMat_ViewTrait, super::RMat_IAdapterConst, super::RMat_IAdapter, super::RMatTraitConst, super::RMatTrait, super::GArgTraitConst, super::GArgTrait, super::GRunArgTraitConst, super::GRunArgTrait, super::DataTraitConst, super::DataTrait, super::ExtractArgsCallbackTraitConst, super::ExtractArgsCallbackTrait, super::ExtractMetaCallbackTraitConst, super::ExtractMetaCallbackTrait, super::GCompiledTraitConst, super::GCompiledTrait, super::GStreamingCompiledTraitConst, super::GStreamingCompiledTrait, super::GComputationTraitConst, super::GComputationTrait, super::GCallTraitConst, super::GCallTrait, super::GTransformTraitConst, super::GTransformTrait, super::GTypeInfoTraitConst, super::GTypeInfoTrait, super::GKernelTraitConst, super::GKernelTrait, super::GKernelImplTraitConst, super::GKernelImplTrait, super::GBackendTraitConst, super::GBackendTrait, super::GFunctorConst, super::GFunctor, super::GKernelPackageTraitConst, super::GKernelPackageTrait, super::use_onlyTraitConst, super::use_onlyTrait };
}
pub const ArgKind_GARRAY: i32 = 6;
pub const ArgKind_GFRAME: i32 = 4;
pub const ArgKind_GMAT: i32 = 2;
pub const ArgKind_GMATP: i32 = 3;
pub const ArgKind_GOBJREF: i32 = 1;
pub const ArgKind_GOPAQUE: i32 = 7;
pub const ArgKind_GSCALAR: i32 = 5;
pub const ArgKind_OPAQUE: i32 = 0;
pub const ArgKind_OPAQUE_VAL: i32 = 0;
pub const GShape_GARRAY: i32 = 2;
pub const GShape_GFRAME: i32 = 4;
pub const GShape_GMAT: i32 = 0;
pub const GShape_GOPAQUE: i32 = 3;
pub const GShape_GSCALAR: i32 = 1;
pub const MediaFormat_BGR: i32 = 0;
pub const MediaFormat_GRAY: i32 = 2;
pub const MediaFormat_NV12: i32 = 1;
pub const OpaqueKind_CV_BOOL: i32 = 1;
pub const OpaqueKind_CV_DOUBLE: i32 = 4;
pub const OpaqueKind_CV_DRAW_PRIM: i32 = 15;
pub const OpaqueKind_CV_FLOAT: i32 = 5;
pub const OpaqueKind_CV_INT: i32 = 2;
pub const OpaqueKind_CV_INT64: i32 = 3;
pub const OpaqueKind_CV_MAT: i32 = 14;
pub const OpaqueKind_CV_POINT: i32 = 8;
pub const OpaqueKind_CV_POINT2F: i32 = 9;
pub const OpaqueKind_CV_POINT3F: i32 = 10;
pub const OpaqueKind_CV_RECT: i32 = 12;
pub const OpaqueKind_CV_SCALAR: i32 = 13;
pub const OpaqueKind_CV_SIZE: i32 = 11;
pub const OpaqueKind_CV_STRING: i32 = 7;
pub const OpaqueKind_CV_UINT64: i32 = 6;
pub const OpaqueKind_CV_UNKNOWN: i32 = 0;
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum ArgKind {
OPAQUE_VAL = 0,
// Duplicate, use OPAQUE_VAL instead
// OPAQUE = 0,
GOBJREF = 1,
GMAT = 2,
GMATP = 3,
GFRAME = 4,
GSCALAR = 5,
GARRAY = 6,
GOPAQUE = 7,
}
opencv_type_enum! { crate::gapi::ArgKind }
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum GShape {
GMAT = 0,
GSCALAR = 1,
GARRAY = 2,
GOPAQUE = 3,
GFRAME = 4,
}
opencv_type_enum! { crate::gapi::GShape }
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum MediaFormat {
BGR = 0,
NV12 = 1,
GRAY = 2,
}
opencv_type_enum! { crate::gapi::MediaFormat }
/// This enum defines different types of cv::MediaFrame provided
/// access to the underlying data. Note that different flags can't
/// be combined in this version.
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum MediaFrame_Access {
/// Access data for reading
R = 0,
/// Access data for writing
W = 1,
}
opencv_type_enum! { crate::gapi::MediaFrame_Access }
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum OpaqueKind {
CV_UNKNOWN = 0,
CV_BOOL = 1,
CV_INT = 2,
CV_INT64 = 3,
CV_DOUBLE = 4,
CV_FLOAT = 5,
CV_UINT64 = 6,
CV_STRING = 7,
CV_POINT = 8,
CV_POINT2F = 9,
CV_POINT3F = 10,
CV_SIZE = 11,
CV_RECT = 12,
CV_SCALAR = 13,
CV_MAT = 14,
CV_DRAW_PRIM = 15,
}
opencv_type_enum! { crate::gapi::OpaqueKind }
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum RMat_Access {
R = 0,
W = 1,
}
opencv_type_enum! { crate::gapi::RMat_Access }
pub type GCompileArgs = core::Vector<crate::gapi::GCompileArg>;
pub type GKinds = core::Vector<crate::gapi::OpaqueKind>;
pub type GRunArgs = core::Vector<crate::gapi::GRunArg>;
pub type GShapes = core::Vector<crate::gapi::GShape>;
pub type GTypesInfo = core::Vector<crate::gapi::GTypeInfo>;
pub type RMat_Adapter = dyn crate::gapi::RMat_IAdapter;
pub type RMat_View_stepsT = core::Vector<size_t>;
pub type GMat2 = core::Tuple<(crate::gapi::GMat, crate::gapi::GMat)>;
pub type GMat3 = core::Tuple<(crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat)>;
pub type GMat4 = core::Tuple<(crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat)>;
pub type GMatScalar = core::Tuple<(crate::gapi::GMat, crate::gapi::GScalar)>;
pub type ImgProc_cont_method = crate::imgproc::ContourApproximationModes;
pub type ImgProc_GMat2 = core::Tuple<(crate::gapi::GMat, crate::gapi::GMat)>;
pub type ImgProc_GMat3 = core::Tuple<(crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat)>;
pub type ImgProc_retr_mode = crate::imgproc::RetrievalModes;
#[inline]
pub fn descr_of_2(mat: &core::Mat) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_descr_of_const_MatR(mat.as_raw_Mat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn descr_of_4(frame: &crate::gapi::MediaFrame) -> Result<crate::gapi::GFrameDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_descr_of_const_MediaFrameR(frame.as_raw_MediaFrame(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GFrameDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn descr_of_1(mat: &crate::gapi::RMat) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_descr_of_const_RMatR(mat.as_raw_RMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn descr_of_3(scalar: core::Scalar) -> Result<crate::gapi::GScalarDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_descr_of_const_ScalarR(&scalar, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalarDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn descr_of(mat: &core::UMat) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_descr_of_const_UMatR(mat.as_raw_UMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn empty_array_desc() -> Result<crate::gapi::GArrayDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_empty_array_desc(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GArrayDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn empty_gopaque_desc() -> Result<crate::gapi::GOpaqueDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_empty_gopaque_desc(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GOpaqueDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn empty_scalar_desc() -> Result<crate::gapi::GScalarDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_empty_scalar_desc(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalarDesc::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from BGR color space to gray-scaled.
///
/// The conventional ranges for B, G, and R channel values are 0 to 255.
/// Resulting gray color value computed as
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7B0%2E114%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2EB%20%2B%20%5Ctexttt%7B0%2E587%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2EG%20%20%2B%20%5Ctexttt%7B0%2E299%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2ER%20)
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.bgr2gray"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC1].
/// ## See also
/// BGR2LUV
#[inline]
pub fn bgr2_gray(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_BGR2Gray_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from BGR color space to I420 color space.
///
/// The function converts an input image from BGR color space to I420.
/// The conventional ranges for R, G, and B channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 1-channel image. [CV_8UC1].
/// Width of I420 output image must be the same as width of input image.
/// Height of I420 output image must be equal 3/2 from height of input image.
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.bgr2i420"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// I4202BGR
#[inline]
pub fn bgr2_i420(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_BGR2I420_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from BGR color space to LUV color space.
///
/// The function converts an input image from BGR color space to LUV.
/// The conventional ranges for B, G, and R channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.bgr2luv"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// RGB2Lab, RGB2LUV
#[inline]
pub fn bgr2_luv(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_BGR2LUV_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from BGR color space to RGB color space.
///
/// The function converts an input image from BGR color space to RGB.
/// The conventional ranges for B, G, and R channel values are 0 to 255.
///
/// Output image is 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.bgr2rgb"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// RGB2BGR
#[inline]
pub fn bgr2_rgb(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_BGR2RGB_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from BGR color space to YUV color space.
///
/// The function converts an input image from BGR color space to YUV.
/// The conventional ranges for B, G, and R channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.bgr2yuv"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// YUV2BGR
#[inline]
pub fn bgr2_yuv(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_BGR2YUV_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from BayerGR color space to RGB.
/// The function converts an input image from BayerGR color space to RGB.
/// The conventional ranges for G, R, and B channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.bayergr2rgb"
///
/// ## Parameters
/// * src_gr: input image: 8-bit unsigned 1-channel image [CV_8UC1].
/// ## See also
/// YUV2BGR, NV12toRGB
#[inline]
pub fn bayer_gr2_rgb(src_gr: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_BayerGR2RGB_const_GMatR(src_gr.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Finds edges in an image using the Canny algorithm.
///
/// The function finds edges in the input image and marks them in the output map edges using the
/// Canny algorithm. The smallest value between threshold1 and threshold2 is used for edge linking. The
/// largest value is used to find initial segments of strong edges. See
/// <http://en.wikipedia.org/wiki/Canny_edge_detector>
///
///
/// Note: Function textual ID is "org.opencv.imgproc.feature.canny"
///
/// ## Parameters
/// * image: 8-bit input image.
/// * threshold1: first threshold for the hysteresis procedure.
/// * threshold2: second threshold for the hysteresis procedure.
/// * apertureSize: aperture size for the Sobel operator.
/// * L2gradient: a flag, indicating whether a more accurate ![inline formula](https://latex.codecogs.com/png.latex?L%5F2) norm
/// ![inline formula](https://latex.codecogs.com/png.latex?%3D%5Csqrt%7B%28dI%2Fdx%29%5E2%20%2B%20%28dI%2Fdy%29%5E2%7D) should be used to calculate the image gradient magnitude (
/// L2gradient=true ), or whether the default ![inline formula](https://latex.codecogs.com/png.latex?L%5F1) norm ![inline formula](https://latex.codecogs.com/png.latex?%3D%7CdI%2Fdx%7C%2B%7CdI%2Fdy%7C) is enough (
/// L2gradient=false ).
///
/// ## C++ default parameters
/// * aperture_size: 3
/// * l2gradient: false
#[inline]
pub fn canny(image: &crate::gapi::GMat, threshold1: f64, threshold2: f64, aperture_size: i32, l2gradient: bool) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_Canny_const_GMatR_double_double_int_bool(image.as_raw_GMat(), threshold1, threshold2, aperture_size, l2gradient, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from I420 color space to BGR color space.
///
/// The function converts an input image from I420 color space to BGR.
/// The conventional ranges for B, G, and R channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image. [CV_8UC3].
/// Width of BGR output image must be the same as width of input image.
/// Height of BGR output image must be equal 2/3 from height of input image.
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.i4202bgr"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 1-channel image [CV_8UC1].
/// ## See also
/// BGR2I420
#[inline]
pub fn i4202_bgr(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_I4202BGR_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from I420 color space to BGR color space.
///
/// The function converts an input image from I420 color space to BGR.
/// The conventional ranges for B, G, and R channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image. [CV_8UC3].
/// Width of RGB output image must be the same as width of input image.
/// Height of RGB output image must be equal 2/3 from height of input image.
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.i4202rgb"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 1-channel image [CV_8UC1].
/// ## See also
/// RGB2I420
#[inline]
pub fn i4202_rgb(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_I4202RGB_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs a look-up table transform of a matrix.
///
/// The function LUT fills the output matrix with values from the look-up table. Indices of the entries
/// are taken from the input matrix. That is, the function processes each element of src as follows:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%20%5Cleftarrow%20%5Ctexttt%7Blut%28src%28I%29%29%7D)
///
/// Supported matrix data types are [CV_8UC1].
/// Output is a matrix of the same size and number of channels as src, and the same depth as lut.
///
///
/// Note: Function textual ID is "org.opencv.core.transform.LUT"
///
/// ## Parameters
/// * src: input matrix of 8-bit elements.
/// * lut: look-up table of 256 elements; in case of multi-channel input array, the table should
/// either have a single channel (in this case the same table is used for all channels) or the same
/// number of channels as in the input matrix.
#[inline]
pub fn lut(src: &crate::gapi::GMat, lut: &core::Mat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_LUT_const_GMatR_const_MatR(src.as_raw_GMat(), lut.as_raw_Mat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from LUV color space to BGR color space.
///
/// The function converts an input image from LUV color space to BGR.
/// The conventional ranges for B, G, and R channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.luv2bgr"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// BGR2LUV
#[inline]
pub fn luv2_bgr(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_LUV2BGR_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the Laplacian of an image.
///
/// The function calculates the Laplacian of the source image by adding up the second x and y
/// derivatives calculated using the Sobel operator:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%5CDelta%20%5Ctexttt%7Bsrc%7D%20%3D%20%20%5Cfrac%7B%5Cpartial%5E2%20%5Ctexttt%7Bsrc%7D%7D%7B%5Cpartial%20x%5E2%7D%20%2B%20%20%5Cfrac%7B%5Cpartial%5E2%20%5Ctexttt%7Bsrc%7D%7D%7B%5Cpartial%20y%5E2%7D)
///
/// This is done when `ksize > 1`. When `ksize == 1`, the Laplacian is computed by filtering the image
/// with the following ![inline formula](https://latex.codecogs.com/png.latex?3%20%5Ctimes%203) aperture:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Bbmatrix%7D%200%20%26%201%20%26%200%5C%5C%201%20%26%20%2D4%20%26%201%5C%5C%200%20%26%201%20%26%200%20%5Cend%7Bbmatrix%7D)
///
///
/// Note: Function textual ID is "org.opencv.imgproc.filters.laplacian"
///
/// ## Parameters
/// * src: Source image.
/// * ddepth: Desired depth of the destination image.
/// * ksize: Aperture size used to compute the second-derivative filters. See #getDerivKernels for
/// details. The size must be positive and odd.
/// * scale: Optional scale factor for the computed Laplacian values. By default, no scaling is
/// applied. See #getDerivKernels for details.
/// * delta: Optional delta value that is added to the results prior to storing them in dst .
/// * borderType: Pixel extrapolation method, see #BorderTypes. #BORDER_WRAP is not supported.
/// ## Returns
/// Destination image of the same size and the same number of channels as src.
/// ## See also
/// Sobel, Scharr
///
/// ## C++ default parameters
/// * ksize: 1
/// * scale: 1
/// * delta: 0
/// * border_type: BORDER_DEFAULT
#[inline]
pub fn laplacian(src: &crate::gapi::GMat, ddepth: i32, ksize: i32, scale: f64, delta: f64, border_type: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_Laplacian_const_GMatR_int_int_double_double_int(src.as_raw_GMat(), ddepth, ksize, scale, delta, border_type, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from NV12 (YUV420p) color space to BGR.
/// The function converts an input image from NV12 color space to RGB.
/// The conventional ranges for Y, U, and V channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.nv12tobgr"
///
/// ## Parameters
/// * src_y: input image: 8-bit unsigned 1-channel image [CV_8UC1].
/// * src_uv: input image: 8-bit unsigned 2-channel image [CV_8UC2].
/// ## See also
/// YUV2BGR, NV12toRGB
#[inline]
pub fn nv12to_bgr(src_y: &crate::gapi::GMat, src_uv: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_NV12toBGR_const_GMatR_const_GMatR(src_y.as_raw_GMat(), src_uv.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from NV12 (YUV420p) color space to BGR.
/// The function converts an input image from NV12 color space to BGR.
/// The conventional ranges for Y, U, and V channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned planar 3-channel image [CV_8UC1].
/// Planar image memory layout is three planes laying in the memory contiguously,
/// so the image height should be plane_height*plane_number,
/// image type is [CV_8UC1].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.nv12torgbp"
///
/// ## Parameters
/// * src_y: input image: 8-bit unsigned 1-channel image [CV_8UC1].
/// * src_uv: input image: 8-bit unsigned 2-channel image [CV_8UC2].
/// ## See also
/// YUV2RGB, NV12toRGBp, NV12toBGR
#[inline]
pub fn nv12to_bg_rp(src_y: &crate::gapi::GMat, src_uv: &crate::gapi::GMat) -> Result<crate::gapi::GMatP> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_NV12toBGRp_const_GMatR_const_GMatR(src_y.as_raw_GMat(), src_uv.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatP::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from NV12 (YUV420p) color space to gray-scaled.
/// The function converts an input image from NV12 color space to gray-scaled.
/// The conventional ranges for Y, U, and V channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 1-channel image [CV_8UC1].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.nv12togray"
///
/// ## Parameters
/// * src_y: input image: 8-bit unsigned 1-channel image [CV_8UC1].
/// * src_uv: input image: 8-bit unsigned 2-channel image [CV_8UC2].
/// ## See also
/// YUV2RGB, NV12toBGR
#[inline]
pub fn nv12to_gray(src_y: &crate::gapi::GMat, src_uv: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_NV12toGray_const_GMatR_const_GMatR(src_y.as_raw_GMat(), src_uv.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from NV12 (YUV420p) color space to RGB.
/// The function converts an input image from NV12 color space to RGB.
/// The conventional ranges for Y, U, and V channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.nv12torgb"
///
/// ## Parameters
/// * src_y: input image: 8-bit unsigned 1-channel image [CV_8UC1].
/// * src_uv: input image: 8-bit unsigned 2-channel image [CV_8UC2].
/// ## See also
/// YUV2RGB, NV12toBGR
#[inline]
pub fn nv12to_rgb(src_y: &crate::gapi::GMat, src_uv: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_NV12toRGB_const_GMatR_const_GMatR(src_y.as_raw_GMat(), src_uv.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from NV12 (YUV420p) color space to RGB.
/// The function converts an input image from NV12 color space to RGB.
/// The conventional ranges for Y, U, and V channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned planar 3-channel image [CV_8UC1].
/// Planar image memory layout is three planes laying in the memory contiguously,
/// so the image height should be plane_height*plane_number,
/// image type is [CV_8UC1].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.nv12torgbp"
///
/// ## Parameters
/// * src_y: input image: 8-bit unsigned 1-channel image [CV_8UC1].
/// * src_uv: input image: 8-bit unsigned 2-channel image [CV_8UC2].
/// ## See also
/// YUV2RGB, NV12toBGRp, NV12toRGB
#[inline]
pub fn nv12to_rg_bp(src_y: &crate::gapi::GMat, src_uv: &crate::gapi::GMat) -> Result<crate::gapi::GMatP> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_NV12toRGBp_const_GMatR_const_GMatR(src_y.as_raw_GMat(), src_uv.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatP::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from RGB color space to gray-scaled.
///
/// The conventional ranges for R, G, and B channel values are 0 to 255.
/// Resulting gray color value computed as
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7B0%2E299%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2ER%20%2B%20%5Ctexttt%7B0%2E587%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2EG%20%20%2B%20%5Ctexttt%7B0%2E114%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2EB%20)
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.rgb2gray"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC1].
/// ## See also
/// RGB2YUV
#[inline]
pub fn rgb2_gray(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_RGB2Gray_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from RGB color space to gray-scaled.
///
/// The conventional ranges for R, G, and B channel values are 0 to 255.
/// Resulting gray color value computed as
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7B0%2E299%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2ER%20%2B%20%5Ctexttt%7B0%2E587%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2EG%20%20%2B%20%5Ctexttt%7B0%2E114%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2EB%20)
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.rgb2gray"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC1].
/// ## See also
/// RGB2YUV
///
/// ## Overloaded parameters
///
/// Resulting gray color value computed as
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7BrY%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2ER%20%2B%20%5Ctexttt%7BgY%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2EG%20%20%2B%20%5Ctexttt%7BbY%7D%20%2A%20%5Ctexttt%7Bsrc%7D%28I%29%2EB%20)
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.rgb2graycustom"
///
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC1].
/// * rY: float multiplier for R channel.
/// * gY: float multiplier for G channel.
/// * bY: float multiplier for B channel.
/// RGB2YUV
#[inline]
pub fn rgb2_gray_1(src: &crate::gapi::GMat, r_y: f32, g_y: f32, b_y: f32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_RGB2Gray_const_GMatR_float_float_float(src.as_raw_GMat(), r_y, g_y, b_y, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from RGB color space to HSV.
/// The function converts an input image from RGB color space to HSV.
/// The conventional ranges for R, G, and B channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.rgb2hsv"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// YUV2BGR, NV12toRGB
#[inline]
pub fn rgb2_hsv(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_RGB2HSV_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from RGB color space to I420 color space.
///
/// The function converts an input image from RGB color space to I420.
/// The conventional ranges for R, G, and B channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 1-channel image. [CV_8UC1].
/// Width of I420 output image must be the same as width of input image.
/// Height of I420 output image must be equal 3/2 from height of input image.
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.rgb2i420"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// I4202RGB
#[inline]
pub fn rgb2_i420(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_RGB2I420_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from RGB color space to Lab color space.
///
/// The function converts an input image from BGR color space to Lab.
/// The conventional ranges for R, G, and B channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC1].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.rgb2lab"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC1].
/// ## See also
/// RGB2YUV, RGB2LUV
#[inline]
pub fn rgb2_lab(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_RGB2Lab_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from RGB color space to YUV422.
/// The function converts an input image from RGB color space to YUV422.
/// The conventional ranges for R, G, and B channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 2-channel image [CV_8UC2].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.rgb2yuv422"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// YUV2BGR, NV12toRGB
#[inline]
pub fn rgb2_yuv422(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_RGB2YUV422_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from RGB color space to YUV color space.
///
/// The function converts an input image from RGB color space to YUV.
/// The conventional ranges for R, G, and B channel values are 0 to 255.
///
/// In case of linear transformations, the range does not matter. But in case of a non-linear
/// transformation, an input RGB image should be normalized to the proper value range to get the correct
/// results, like here, at RGB ![inline formula](https://latex.codecogs.com/png.latex?%5Crightarrow) Y\*u\*v\* transformation.
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.rgb2yuv"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// YUV2RGB, RGB2Lab
#[inline]
pub fn rgb2_yuv(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_RGB2YUV_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator.
///
/// In all cases except one, the ![inline formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bksize%7D%20%5Ctimes%20%5Ctexttt%7Bksize%7D) separable kernel is used to
/// calculate the derivative. When ![inline formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bksize%20%3D%201%7D), the ![inline formula](https://latex.codecogs.com/png.latex?3%20%5Ctimes%201) or ![inline formula](https://latex.codecogs.com/png.latex?1%20%5Ctimes%203)
/// kernel is used (that is, no Gaussian smoothing is done). `ksize = 1` can only be used for the first
/// or the second x- or y- derivatives.
///
/// There is also the special value `ksize = FILTER_SCHARR (-1)` that corresponds to the ![inline formula](https://latex.codecogs.com/png.latex?3%5Ctimes3) Scharr
/// filter that may give more accurate results than the ![inline formula](https://latex.codecogs.com/png.latex?3%5Ctimes3) Sobel. The Scharr aperture is
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Bbmatrix%7D%20%2D3%20%26%200%20%26%203%5C%5C%20%2D10%20%26%200%20%26%2010%5C%5C%20%2D3%20%26%200%20%26%203%20%5Cend%7Bbmatrix%7D)
///
/// for the x-derivative, or transposed for the y-derivative.
///
/// The function calculates an image derivative by convolving the image with the appropriate kernel:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%5Cfrac%7B%5Cpartial%5E%7Bxorder%2Byorder%7D%20%5Ctexttt%7Bsrc%7D%7D%7B%5Cpartial%20x%5E%7Bxorder%7D%20%5Cpartial%20y%5E%7Byorder%7D%7D)
///
/// The Sobel operators combine Gaussian smoothing and differentiation, so the result is more or less
/// resistant to the noise. Most often, the function is called with ( xorder = 1, yorder = 0, ksize = 3)
/// or ( xorder = 0, yorder = 1, ksize = 3) to calculate the first x- or y- image derivative. The first
/// case corresponds to a kernel of:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Bbmatrix%7D%20%2D1%20%26%200%20%26%201%5C%5C%20%2D2%20%26%200%20%26%202%5C%5C%20%2D1%20%26%200%20%26%201%20%5Cend%7Bbmatrix%7D)
///
/// The second case corresponds to a kernel of:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Bbmatrix%7D%20%2D1%20%26%20%2D2%20%26%20%2D1%5C%5C%200%20%26%200%20%26%200%5C%5C%201%20%26%202%20%26%201%20%5Cend%7Bbmatrix%7D)
///
///
/// Note:
/// - First returned matrix correspons to dx derivative while the second one to dy.
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.sobelxy"
///
/// ## Parameters
/// * src: input image.
/// * ddepth: output image depth, see [filter_depths] "combinations"; in the case of
/// 8-bit input images it will result in truncated derivatives.
/// * order: order of the derivatives.
/// * ksize: size of the extended Sobel kernel; it must be odd.
/// * scale: optional scale factor for the computed derivative values; by default, no scaling is
/// applied (see cv::getDerivKernels for details).
/// * delta: optional delta value that is added to the results prior to storing them in dst.
/// * borderType: pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of constant border type
/// ## See also
/// filter2D, gaussianBlur, cartToPolar
///
/// ## C++ default parameters
/// * ksize: 3
/// * scale: 1
/// * delta: 0
/// * border_type: BORDER_DEFAULT
/// * border_value: Scalar(0)
#[inline]
pub fn sobel_xy(src: &crate::gapi::GMat, ddepth: i32, order: i32, ksize: i32, scale: f64, delta: f64, border_type: i32, border_value: core::Scalar) -> Result<core::Tuple<(crate::gapi::GMat, crate::gapi::GMat)>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_SobelXY_const_GMatR_int_int_int_double_double_int_const_ScalarR(src.as_raw_GMat(), ddepth, order, ksize, scale, delta, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Tuple::<(crate::gapi::GMat, crate::gapi::GMat)>::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator.
///
/// In all cases except one, the ![inline formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bksize%7D%20%5Ctimes%20%5Ctexttt%7Bksize%7D) separable kernel is used to
/// calculate the derivative. When ![inline formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bksize%20%3D%201%7D), the ![inline formula](https://latex.codecogs.com/png.latex?3%20%5Ctimes%201) or ![inline formula](https://latex.codecogs.com/png.latex?1%20%5Ctimes%203)
/// kernel is used (that is, no Gaussian smoothing is done). `ksize = 1` can only be used for the first
/// or the second x- or y- derivatives.
///
/// There is also the special value `ksize = FILTER_SCHARR (-1)` that corresponds to the ![inline formula](https://latex.codecogs.com/png.latex?3%5Ctimes3) Scharr
/// filter that may give more accurate results than the ![inline formula](https://latex.codecogs.com/png.latex?3%5Ctimes3) Sobel. The Scharr aperture is
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Bbmatrix%7D%20%2D3%20%26%200%20%26%203%5C%5C%20%2D10%20%26%200%20%26%2010%5C%5C%20%2D3%20%26%200%20%26%203%20%5Cend%7Bbmatrix%7D)
///
/// for the x-derivative, or transposed for the y-derivative.
///
/// The function calculates an image derivative by convolving the image with the appropriate kernel:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%5Cfrac%7B%5Cpartial%5E%7Bxorder%2Byorder%7D%20%5Ctexttt%7Bsrc%7D%7D%7B%5Cpartial%20x%5E%7Bxorder%7D%20%5Cpartial%20y%5E%7Byorder%7D%7D)
///
/// The Sobel operators combine Gaussian smoothing and differentiation, so the result is more or less
/// resistant to the noise. Most often, the function is called with ( xorder = 1, yorder = 0, ksize = 3)
/// or ( xorder = 0, yorder = 1, ksize = 3) to calculate the first x- or y- image derivative. The first
/// case corresponds to a kernel of:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Bbmatrix%7D%20%2D1%20%26%200%20%26%201%5C%5C%20%2D2%20%26%200%20%26%202%5C%5C%20%2D1%20%26%200%20%26%201%20%5Cend%7Bbmatrix%7D)
///
/// The second case corresponds to a kernel of:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Bbmatrix%7D%20%2D1%20%26%20%2D2%20%26%20%2D1%5C%5C%200%20%26%200%20%26%200%5C%5C%201%20%26%202%20%26%201%20%5Cend%7Bbmatrix%7D)
///
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.sobel"
///
/// ## Parameters
/// * src: input image.
/// * ddepth: output image depth, see [filter_depths] "combinations"; in the case of
/// 8-bit input images it will result in truncated derivatives.
/// * dx: order of the derivative x.
/// * dy: order of the derivative y.
/// * ksize: size of the extended Sobel kernel; it must be odd.
/// * scale: optional scale factor for the computed derivative values; by default, no scaling is
/// applied (see cv::getDerivKernels for details).
/// * delta: optional delta value that is added to the results prior to storing them in dst.
/// * borderType: pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of constant border type
/// ## See also
/// filter2D, gaussianBlur, cartToPolar
///
/// ## C++ default parameters
/// * ksize: 3
/// * scale: 1
/// * delta: 0
/// * border_type: BORDER_DEFAULT
/// * border_value: Scalar(0)
#[inline]
pub fn sobel(src: &crate::gapi::GMat, ddepth: i32, dx: i32, dy: i32, ksize: i32, scale: f64, delta: f64, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_Sobel_const_GMatR_int_int_int_int_double_double_int_const_ScalarR(src.as_raw_GMat(), ddepth, dx, dy, ksize, scale, delta, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from YUV color space to BGR color space.
///
/// The function converts an input image from YUV color space to BGR.
/// The conventional ranges for B, G, and R channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.yuv2bgr"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// BGR2YUV
#[inline]
pub fn yuv2_bgr(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_YUV2BGR_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts an image from YUV color space to RGB.
/// The function converts an input image from YUV color space to RGB.
/// The conventional ranges for Y, U, and V channel values are 0 to 255.
///
/// Output image must be 8-bit unsigned 3-channel image [CV_8UC3].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.colorconvert.yuv2rgb"
///
/// ## Parameters
/// * src: input image: 8-bit unsigned 3-channel image [CV_8UC3].
/// ## See also
/// RGB2Lab, RGB2YUV
#[inline]
pub fn yuv2_rgb(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_YUV2RGB_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates absolute value of matrix elements.
///
/// The function abs calculates absolute difference between matrix elements and given scalar value:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%28I%29%20%3D%20%20%5Ctexttt%7Bsaturate%7D%20%28%7C%20%5Ctexttt%7Bsrc1%7D%28I%29%20%2D%20%20%5Ctexttt%7BmatC%7D%28I%29%7C%29)
/// where matC is constructed from given scalar c and has the same sizes and depth as input matrix src.
///
/// Output matrix must be of the same size and depth as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.absdiffC"
/// ## Parameters
/// * src: input matrix.
/// * c: scalar to be subtracted.
/// ## See also
/// min, max
#[inline]
pub fn abs_diff_c(src: &crate::gapi::GMat, c: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_absDiffC_const_GMatR_const_GScalarR(src.as_raw_GMat(), c.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the per-element absolute difference between two matrices.
///
/// The function absDiff calculates absolute difference between two matrices of the same size and depth:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%28I%29%20%3D%20%20%5Ctexttt%7Bsaturate%7D%20%28%7C%20%5Ctexttt%7Bsrc1%7D%28I%29%20%2D%20%20%5Ctexttt%7Bsrc2%7D%28I%29%7C%29)
/// where I is a multi-dimensional index of matrix elements. In case of
/// multi-channel matrices, each channel is processed independently.
/// Output matrix must have the same size and depth as input matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.absdiff"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
/// ## See also
/// abs
#[inline]
pub fn abs_diff(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_absDiff_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the per-element sum of matrix and given scalar.
///
/// The function addC adds a given scalar value to each element of given matrix.
/// The function can be replaced with matrix expressions:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%2B%20%5Ctexttt%7Bc%7D)
///
/// Depth of the output matrix is determined by the ddepth parameter.
/// If ddepth is set to default -1, the depth of output matrix will be the same as the depth of input matrix.
/// The matrices can be single or multi channel. Output matrix must have the same size and number of channels as the input matrix.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.addC"
/// ## Parameters
/// * src1: first input matrix.
/// * c: scalar value to be added.
/// * ddepth: optional depth of the output matrix.
/// ## See also
/// sub, addWeighted
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn add_c(src1: &crate::gapi::GMat, c: &crate::gapi::GScalar, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_addC_const_GMatR_const_GScalarR_int(src1.as_raw_GMat(), c.as_raw_GScalar(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the per-element sum of matrix and given scalar.
///
/// The function addC adds a given scalar value to each element of given matrix.
/// The function can be replaced with matrix expressions:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%2B%20%5Ctexttt%7Bc%7D)
///
/// Depth of the output matrix is determined by the ddepth parameter.
/// If ddepth is set to default -1, the depth of output matrix will be the same as the depth of input matrix.
/// The matrices can be single or multi channel. Output matrix must have the same size and number of channels as the input matrix.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.addC"
/// ## Parameters
/// * src1: first input matrix.
/// * c: scalar value to be added.
/// * ddepth: optional depth of the output matrix.
/// ## See also
/// sub, addWeighted
///
/// ## Overloaded parameters
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn add_c_1(c: &crate::gapi::GScalar, src1: &crate::gapi::GMat, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_addC_const_GScalarR_const_GMatR_int(c.as_raw_GScalar(), src1.as_raw_GMat(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the weighted sum of two matrices.
///
/// The function addWeighted calculates the weighted sum of two matrices as follows:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7Bsaturate%7D%20%28%20%5Ctexttt%7Bsrc1%7D%20%28I%29%2A%20%5Ctexttt%7Balpha%7D%20%2B%20%20%5Ctexttt%7Bsrc2%7D%20%28I%29%2A%20%5Ctexttt%7Bbeta%7D%20%2B%20%20%5Ctexttt%7Bgamma%7D%20%29)
/// where I is a multi-dimensional index of array elements. In case of multi-channel matrices, each
/// channel is processed independently.
///
/// The function can be replaced with a matrix expression:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%28I%29%20%3D%20%20%5Ctexttt%7Balpha%7D%20%2A%20%5Ctexttt%7Bsrc1%7D%28I%29%20%2D%20%5Ctexttt%7Bbeta%7D%20%2A%20%5Ctexttt%7Bsrc2%7D%28I%29%20%2B%20%5Ctexttt%7Bgamma%7D%20)
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.addweighted"
/// ## Parameters
/// * src1: first input matrix.
/// * alpha: weight of the first matrix elements.
/// * src2: second input matrix of the same size and channel number as src1.
/// * beta: weight of the second matrix elements.
/// * gamma: scalar added to each sum.
/// * ddepth: optional depth of the output matrix.
/// ## See also
/// add, sub
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn add_weighted(src1: &crate::gapi::GMat, alpha: f64, src2: &crate::gapi::GMat, beta: f64, gamma: f64, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_addWeighted_const_GMatR_double_const_GMatR_double_double_int(src1.as_raw_GMat(), alpha, src2.as_raw_GMat(), beta, gamma, ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the per-element sum of two matrices.
///
/// The function add calculates sum of two matrices of the same size and the same number of channels:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%28I%29%20%3D%20%20%5Ctexttt%7Bsaturate%7D%20%28%20%5Ctexttt%7Bsrc1%7D%28I%29%20%2B%20%20%5Ctexttt%7Bsrc2%7D%28I%29%29%20%5Cquad%20%5Ctexttt%7Bif%20mask%7D%28I%29%20%5Cne0)
///
/// The function can be replaced with matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%2B%20%5Ctexttt%7Bsrc2%7D)
///
/// The input matrices and the output matrix can all have the same or different depths. For example, you
/// can add a 16-bit unsigned matrix to a 8-bit signed matrix and store the sum as a 32-bit
/// floating-point matrix. Depth of the output matrix is determined by the ddepth parameter.
/// If src1.depth() == src2.depth(), ddepth can be set to the default -1. In this case, the output matrix will have
/// the same depth as the input matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.add"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
/// * ddepth: optional depth of the output matrix.
/// ## See also
/// sub, addWeighted
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn add(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_add_const_GMatR_const_GMatR_int(src1.as_raw_GMat(), src2.as_raw_GMat(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies the bilateral filter to an image.
///
/// The function applies bilateral filtering to the input image, as described in
/// <http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html>
/// bilateralFilter can reduce unwanted noise very well while keeping edges fairly sharp. However, it is
/// very slow compared to most filters.
///
/// _Sigma values_: For simplicity, you can set the 2 sigma values to be the same. If they are small (\<
/// 10), the filter will not have much effect, whereas if they are large (\> 150), they will have a very
/// strong effect, making the image look "cartoonish".
///
/// _Filter size_: Large filters (d \> 5) are very slow, so it is recommended to use d=5 for real-time
/// applications, and perhaps d=9 for offline applications that need heavy noise filtering.
///
/// This filter does not work inplace.
///
///
/// Note: Function textual ID is "org.opencv.imgproc.filters.bilateralfilter"
///
/// ## Parameters
/// * src: Source 8-bit or floating-point, 1-channel or 3-channel image.
/// * d: Diameter of each pixel neighborhood that is used during filtering. If it is non-positive,
/// it is computed from sigmaSpace.
/// * sigmaColor: Filter sigma in the color space. A larger value of the parameter means that
/// farther colors within the pixel neighborhood (see sigmaSpace) will be mixed together, resulting
/// in larger areas of semi-equal color.
/// * sigmaSpace: Filter sigma in the coordinate space. A larger value of the parameter means that
/// farther pixels will influence each other as long as their colors are close enough (see sigmaColor
/// ). When d\>0, it specifies the neighborhood size regardless of sigmaSpace. Otherwise, d is
/// proportional to sigmaSpace.
/// * borderType: border mode used to extrapolate pixels outside of the image, see #BorderTypes
/// ## Returns
/// Destination image of the same size and type as src.
///
/// ## C++ default parameters
/// * border_type: BORDER_DEFAULT
#[inline]
pub fn bilateral_filter(src: &crate::gapi::GMat, d: i32, sigma_color: f64, sigma_space: f64, border_type: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_bilateralFilter_const_GMatR_int_double_double_int(src.as_raw_GMat(), d, sigma_color, sigma_space, border_type, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// computes bitwise conjunction of the two matrixes (src1 & src2)
/// Calculates the per-element bit-wise logical conjunction of two matrices of the same size.
///
/// In case of floating-point matrices, their machine-specific bit
/// representations (usually IEEE754-compliant) are used for the operation.
/// In case of multi-channel matrices, each channel is processed
/// independently. Output matrix must have the same size and depth as the input
/// matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_and"
///
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
#[inline]
pub fn bitwise_and(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_bitwise_and_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// computes bitwise conjunction of the two matrixes (src1 & src2)
/// Calculates the per-element bit-wise logical conjunction of two matrices of the same size.
///
/// In case of floating-point matrices, their machine-specific bit
/// representations (usually IEEE754-compliant) are used for the operation.
/// In case of multi-channel matrices, each channel is processed
/// independently. Output matrix must have the same size and depth as the input
/// matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_and"
///
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_andS"
/// * src1: first input matrix.
/// * src2: scalar, which will be per-lemenetly conjuncted with elements of src1.
#[inline]
pub fn bitwise_and_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_bitwise_and_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Inverts every bit of an array.
///
/// The function bitwise_not calculates per-element bit-wise inversion of the input
/// matrix:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Cneg%20%5Ctexttt%7Bsrc%7D%20%28I%29)
///
/// In case of floating-point matrices, their machine-specific bit
/// representations (usually IEEE754-compliant) are used for the operation.
/// In case of multi-channel matrices, each channel is processed
/// independently. Output matrix must have the same size and depth as the input
/// matrix.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_not"
///
/// ## Parameters
/// * src: input matrix.
#[inline]
pub fn bitwise_not(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_bitwise_not_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// computes bitwise disjunction of the two matrixes (src1 | src2)
/// Calculates the per-element bit-wise logical disjunction of two matrices of the same size.
///
/// In case of floating-point matrices, their machine-specific bit
/// representations (usually IEEE754-compliant) are used for the operation.
/// In case of multi-channel matrices, each channel is processed
/// independently. Output matrix must have the same size and depth as the input
/// matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_or"
///
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
#[inline]
pub fn bitwise_or(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_bitwise_or_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// computes bitwise disjunction of the two matrixes (src1 | src2)
/// Calculates the per-element bit-wise logical disjunction of two matrices of the same size.
///
/// In case of floating-point matrices, their machine-specific bit
/// representations (usually IEEE754-compliant) are used for the operation.
/// In case of multi-channel matrices, each channel is processed
/// independently. Output matrix must have the same size and depth as the input
/// matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_or"
///
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_orS"
/// * src1: first input matrix.
/// * src2: scalar, which will be per-lemenetly disjuncted with elements of src1.
#[inline]
pub fn bitwise_or_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_bitwise_or_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// computes bitwise logical "exclusive or" of the two matrixes (src1 ^ src2)
/// Calculates the per-element bit-wise logical "exclusive or" of two matrices of the same size.
///
/// In case of floating-point matrices, their machine-specific bit
/// representations (usually IEEE754-compliant) are used for the operation.
/// In case of multi-channel matrices, each channel is processed
/// independently. Output matrix must have the same size and depth as the input
/// matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_xor"
///
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
#[inline]
pub fn bitwise_xor(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_bitwise_xor_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// computes bitwise logical "exclusive or" of the two matrixes (src1 ^ src2)
/// Calculates the per-element bit-wise logical "exclusive or" of two matrices of the same size.
///
/// In case of floating-point matrices, their machine-specific bit
/// representations (usually IEEE754-compliant) are used for the operation.
/// In case of multi-channel matrices, each channel is processed
/// independently. Output matrix must have the same size and depth as the input
/// matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_xor"
///
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.bitwise_xorS"
/// * src1: first input matrix.
/// * src2: scalar, for which per-lemenet "logical or" operation on elements of src1 will be performed.
#[inline]
pub fn bitwise_xor_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_bitwise_xor_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Blurs an image using the normalized box filter.
///
/// The function smooths an image using the kernel:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7BK%7D%20%3D%20%20%5Cfrac%7B1%7D%7B%5Ctexttt%7Bksize%2Ewidth%2Aksize%2Eheight%7D%7D%20%5Cbegin%7Bbmatrix%7D%201%20%26%201%20%26%201%20%26%20%20%5Ccdots%20%26%201%20%26%201%20%20%5C%5C%201%20%26%201%20%26%201%20%26%20%20%5Ccdots%20%26%201%20%26%201%20%20%5C%5C%20%5Cdots%20%5C%5C%201%20%26%201%20%26%201%20%26%20%20%5Ccdots%20%26%201%20%26%201%20%20%5C%5C%20%5Cend%7Bbmatrix%7D)
///
/// The call `blur(src, ksize, anchor, borderType)` is equivalent to `boxFilter(src, src.type(), ksize, anchor,
/// true, borderType)`.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.blur"
///
/// ## Parameters
/// * src: Source image.
/// * ksize: blurring kernel size.
/// * anchor: anchor point; default value Point(-1,-1) means that the anchor is at the kernel
/// center.
/// * borderType: border mode used to extrapolate pixels outside of the image, see cv::BorderTypes
/// * borderValue: border value in case of constant border type
/// ## See also
/// boxFilter, bilateralFilter, GaussianBlur, medianBlur
///
/// ## C++ default parameters
/// * anchor: Point(-1,-1)
/// * border_type: BORDER_DEFAULT
/// * border_value: Scalar(0)
#[inline]
pub fn blur(src: &crate::gapi::GMat, ksize: core::Size, anchor: core::Point, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_blur_const_GMatR_const_SizeR_const_PointR_int_const_ScalarR(src.as_raw_GMat(), &ksize, &anchor, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Blurs an image using the box filter.
///
/// The function smooths an image using the kernel:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7BK%7D%20%3D%20%20%5Calpha%20%5Cbegin%7Bbmatrix%7D%201%20%26%201%20%26%201%20%26%20%20%5Ccdots%20%26%201%20%26%201%20%20%5C%5C%201%20%26%201%20%26%201%20%26%20%20%5Ccdots%20%26%201%20%26%201%20%20%5C%5C%20%5Cdots%20%5C%5C%201%20%26%201%20%26%201%20%26%20%20%5Ccdots%20%26%201%20%26%201%20%5Cend%7Bbmatrix%7D)
///
/// where
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Calpha%20%3D%20%5Cbegin%7Bcases%7D%20%5Cfrac%7B1%7D%7B%5Ctexttt%7Bksize%2Ewidth%2Aksize%2Eheight%7D%7D%20%26%20%5Ctexttt%7Bwhen%20%7D%20%5Ctexttt%7Bnormalize%3Dtrue%7D%20%20%5C%5C1%20%26%20%5Ctexttt%7Botherwise%7D%20%5Cend%7Bcases%7D)
///
/// Unnormalized box filter is useful for computing various integral characteristics over each pixel
/// neighborhood, such as covariance matrices of image derivatives (used in dense optical flow
/// algorithms, and so on). If you need to compute pixel sums over variable-size windows, use cv::integral.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.boxfilter"
///
/// ## Parameters
/// * src: Source image.
/// * dtype: the output image depth (-1 to set the input image data type).
/// * ksize: blurring kernel size.
/// * anchor: Anchor position within the kernel. The default value ![inline formula](https://latex.codecogs.com/png.latex?%28%2D1%2C%2D1%29) means that the anchor
/// is at the kernel center.
/// * normalize: flag, specifying whether the kernel is normalized by its area or not.
/// * borderType: Pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of constant border type
/// ## See also
/// sepFilter, gaussianBlur, medianBlur, integral
///
/// ## C++ default parameters
/// * anchor: Point(-1,-1)
/// * normalize: true
/// * border_type: BORDER_DEFAULT
/// * border_value: Scalar(0)
#[inline]
pub fn box_filter(src: &crate::gapi::GMat, dtype: i32, ksize: core::Size, anchor: core::Point, normalize: bool, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_boxFilter_const_GMatR_int_const_SizeR_const_PointR_bool_int_const_ScalarR(src.as_raw_GMat(), dtype, &ksize, &anchor, normalize, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the magnitude and angle of 2D vectors.
///
/// The function cartToPolar calculates either the magnitude, angle, or both
/// for every 2D vector (x(I),y(I)):
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Barray%7D%7Bl%7D%20%5Ctexttt%7Bmagnitude%7D%20%28I%29%3D%20%5Csqrt%7B%5Ctexttt%7Bx%7D%28I%29%5E2%2B%5Ctexttt%7By%7D%28I%29%5E2%7D%20%2C%20%5C%5C%20%5Ctexttt%7Bangle%7D%20%28I%29%3D%20%5Ctexttt%7Batan2%7D%20%28%20%5Ctexttt%7By%7D%20%28I%29%2C%20%5Ctexttt%7Bx%7D%20%28I%29%29%5B%20%5Ccdot180%20%2F%20%5Cpi%20%5D%20%5Cend%7Barray%7D)
///
/// The angles are calculated with accuracy about 0.3 degrees. For the point
/// (0,0), the angle is set to 0.
///
/// First output is a matrix of magnitudes of the same size and depth as input x.
/// Second output is a matrix of angles that has the same size and depth as
/// x; the angles are measured in radians (from 0 to 2\*Pi) or in degrees (0 to 360 degrees).
///
///
/// Note: Function textual ID is "org.opencv.core.math.cartToPolar"
///
/// ## Parameters
/// * x: matrix of [CV_32FC1] x-coordinates.
/// * y: array of [CV_32FC1] y-coordinates.
/// * angleInDegrees: a flag, indicating whether the angles are measured
/// in radians (which is by default), or in degrees.
/// ## See also
/// polarToCart
///
/// ## C++ default parameters
/// * angle_in_degrees: false
#[inline]
pub fn cart_to_polar(x: &crate::gapi::GMat, y: &crate::gapi::GMat, angle_in_degrees: bool) -> Result<core::Tuple<(crate::gapi::GMat, crate::gapi::GMat)>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cartToPolar_const_GMatR_const_GMatR_bool(x.as_raw_GMat(), y.as_raw_GMat(), angle_in_degrees, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Tuple::<(crate::gapi::GMat, crate::gapi::GMat)>::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are equal to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3D%3D%20%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3D%3D%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpEQ"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpNE
#[inline]
pub fn cmp_eq(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpEQ_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are equal to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3D%3D%20%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3D%3D%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpEQ"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpNE
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpEQScalar"
#[inline]
pub fn cmp_eq_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpEQ_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are greater or equal compare to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3E%3D%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3E%3D%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpGE"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpLE, cmpGT, cmpLT
#[inline]
pub fn cmp_ge(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpGE_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are greater or equal compare to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3E%3D%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3E%3D%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpGE"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpLE, cmpGT, cmpLT
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpLGEcalar"
#[inline]
pub fn cmp_ge_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpGE_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are greater compare to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3E%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3E%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices/matrix.
///
/// Supported input matrix data types are [CV_8UC1], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpGT"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpLE, cmpGE, cmpLT
#[inline]
pub fn cmp_gt(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpGT_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are greater compare to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3E%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3E%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices/matrix.
///
/// Supported input matrix data types are [CV_8UC1], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpGT"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpLE, cmpGE, cmpLT
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpGTScalar"
#[inline]
pub fn cmp_gt_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpGT_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are less or equal compare to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3C%3D%20%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3C%3D%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpLE"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpGT, cmpGE, cmpLT
#[inline]
pub fn cmp_le(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpLE_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are less or equal compare to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3C%3D%20%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3C%3D%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpLE"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpGT, cmpGE, cmpLT
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpLEScalar"
#[inline]
pub fn cmp_le_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpLE_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are less than elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3C%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3C%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices/matrix.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpLT"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpLE, cmpGE, cmpGT
#[inline]
pub fn cmp_lt(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpLT_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are less than elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%3C%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%3C%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices/matrix.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpLT"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpLE, cmpGE, cmpGT
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpLTScalar"
#[inline]
pub fn cmp_lt_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpLT_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are not equal to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%21%3D%20%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%21%3D%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpNE"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpEQ
#[inline]
pub fn cmp_ne(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpNE_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs the per-element comparison of two matrices checking if elements from first matrix are not equal to elements in second.
///
/// The function compares elements of two matrices src1 and src2 of the same size:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%21%3D%20%20%5Ctexttt%7Bsrc2%7D%20%28I%29)
///
/// When the comparison result is true, the corresponding element of output
/// array is set to 255. The comparison operations can be replaced with the
/// equivalent matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%21%3D%20%5Ctexttt%7Bsrc2%7D)
///
/// Output matrix of depth [CV_8U] must have the same size and the same number of channels as
/// the input matrices.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpNE"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix/scalar of the same depth as first input matrix.
/// ## See also
/// min, max, threshold, cmpEQ
///
/// ## Overloaded parameters
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.compare.cmpNEScalar"
#[inline]
pub fn cmp_ne_1(src1: &crate::gapi::GMat, src2: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_cmpNE_const_GMatR_const_GScalarR(src1.as_raw_GMat(), src2.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Create a new package based on `lhs` and `rhs`.
///
/// ## Parameters
/// * lhs: "Left-hand-side" package in the process
/// * rhs: "Right-hand-side" package in the process
/// ## Returns
/// a new kernel package.
#[inline]
pub fn combine(lhs: &crate::gapi::GKernelPackage, rhs: &crate::gapi::GKernelPackage) -> Result<crate::gapi::GKernelPackage> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_combine_const_GKernelPackageR_const_GKernelPackageR(lhs.as_raw_GKernelPackage(), rhs.as_raw_GKernelPackage(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GKernelPackage::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies horizontal concatenation to given matrices.
///
/// The function horizontally concatenates two GMat matrices (with the same number of rows).
/// ```C++
/// GMat A = { 1, 4,
/// 2, 5,
/// 3, 6 };
/// GMat B = { 7, 10,
/// 8, 11,
/// 9, 12 };
///
/// GMat C = gapi::concatHor(A, B);
/// //C:
/// //[1, 4, 7, 10;
/// // 2, 5, 8, 11;
/// // 3, 6, 9, 12]
/// ```
///
/// Output matrix must the same number of rows and depth as the src1 and src2, and the sum of cols of the src1 and src2.
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.transform.concatHor"
///
/// ## Parameters
/// * src1: first input matrix to be considered for horizontal concatenation.
/// * src2: second input matrix to be considered for horizontal concatenation.
/// ## See also
/// concatVert
#[inline]
pub fn concat_hor(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_concatHor_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies horizontal concatenation to given matrices.
///
/// The function horizontally concatenates two GMat matrices (with the same number of rows).
/// ```C++
/// GMat A = { 1, 4,
/// 2, 5,
/// 3, 6 };
/// GMat B = { 7, 10,
/// 8, 11,
/// 9, 12 };
///
/// GMat C = gapi::concatHor(A, B);
/// //C:
/// //[1, 4, 7, 10;
/// // 2, 5, 8, 11;
/// // 3, 6, 9, 12]
/// ```
///
/// Output matrix must the same number of rows and depth as the src1 and src2, and the sum of cols of the src1 and src2.
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.transform.concatHor"
///
/// ## Parameters
/// * src1: first input matrix to be considered for horizontal concatenation.
/// * src2: second input matrix to be considered for horizontal concatenation.
/// ## See also
/// concatVert
///
/// ## Overloaded parameters
///
/// The function horizontally concatenates given number of GMat matrices (with the same number of columns).
/// Output matrix must the same number of columns and depth as the input matrices, and the sum of rows of input matrices.
///
/// * v: vector of input matrices to be concatenated horizontally.
#[inline]
pub fn concat_hor_1(v: &core::Vector<crate::gapi::GMat>) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_concatHor_const_vectorLGMatGR(v.as_raw_VectorOfGMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies vertical concatenation to given matrices.
///
/// The function vertically concatenates two GMat matrices (with the same number of cols).
/// ```C++
/// GMat A = { 1, 7,
/// 2, 8,
/// 3, 9 };
/// GMat B = { 4, 10,
/// 5, 11,
/// 6, 12 };
///
/// GMat C = gapi::concatVert(A, B);
/// //C:
/// //[1, 7;
/// // 2, 8;
/// // 3, 9;
/// // 4, 10;
/// // 5, 11;
/// // 6, 12]
/// ```
///
///
/// Output matrix must the same number of cols and depth as the src1 and src2, and the sum of rows of the src1 and src2.
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.transform.concatVert"
///
/// ## Parameters
/// * src1: first input matrix to be considered for vertical concatenation.
/// * src2: second input matrix to be considered for vertical concatenation.
/// ## See also
/// concatHor
#[inline]
pub fn concat_vert(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_concatVert_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies vertical concatenation to given matrices.
///
/// The function vertically concatenates two GMat matrices (with the same number of cols).
/// ```C++
/// GMat A = { 1, 7,
/// 2, 8,
/// 3, 9 };
/// GMat B = { 4, 10,
/// 5, 11,
/// 6, 12 };
///
/// GMat C = gapi::concatVert(A, B);
/// //C:
/// //[1, 7;
/// // 2, 8;
/// // 3, 9;
/// // 4, 10;
/// // 5, 11;
/// // 6, 12]
/// ```
///
///
/// Output matrix must the same number of cols and depth as the src1 and src2, and the sum of rows of the src1 and src2.
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.imgproc.transform.concatVert"
///
/// ## Parameters
/// * src1: first input matrix to be considered for vertical concatenation.
/// * src2: second input matrix to be considered for vertical concatenation.
/// ## See also
/// concatHor
///
/// ## Overloaded parameters
///
/// The function vertically concatenates given number of GMat matrices (with the same number of columns).
/// Output matrix must the same number of columns and depth as the input matrices, and the sum of rows of input matrices.
///
/// * v: vector of input matrices to be concatenated vertically.
#[inline]
pub fn concat_vert_1(v: &core::Vector<crate::gapi::GMat>) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_concatVert_const_vectorLGMatGR(v.as_raw_VectorOfGMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Converts a matrix to another data depth with optional scaling.
///
/// The method converts source pixel values to the target data depth. saturate_cast\<\> is applied at
/// the end to avoid possible overflows:
///
/// ![block formula](https://latex.codecogs.com/png.latex?m%28x%2Cy%29%20%3D%20saturate%20%5C%5F%20cast%3CrType%3E%28%20%5Calpha%20%28%2Athis%29%28x%2Cy%29%20%2B%20%20%5Cbeta%20%29)
/// Output matrix must be of the same size as input one.
///
///
/// Note: Function textual ID is "org.opencv.core.transform.convertTo"
/// ## Parameters
/// * src: input matrix to be converted from.
/// * rdepth: desired output matrix depth or, rather, the depth since the number of channels are the
/// same as the input has; if rdepth is negative, the output matrix will have the same depth as the input.
/// * alpha: optional scale factor.
/// * beta: optional delta added to the scaled values.
///
/// ## C++ default parameters
/// * alpha: 1
/// * beta: 0
#[inline]
pub fn convert_to(src: &crate::gapi::GMat, rdepth: i32, alpha: f64, beta: f64) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_convertTo_const_GMatR_int_double_double(src.as_raw_GMat(), rdepth, alpha, beta, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Makes a copy of the input frame. Note that this copy may be not real
/// (no actual data copied). Use this function to maintain graph contracts,
/// e.g when graph's input needs to be passed directly to output, like in Streaming mode.
///
///
/// Note: Function textual ID is "org.opencv.streaming.copy"
///
/// ## Parameters
/// * in: Input frame
/// ## Returns
/// Copy of the input
#[inline]
pub fn copy_1(in_: &crate::gapi::GFrame) -> Result<crate::gapi::GFrame> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_copy_const_GFrameR(in_.as_raw_GFrame(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GFrame::opencv_from_extern(ret) };
Ok(ret)
}
/// Makes a copy of the input image. Note that this copy may be not real
/// (no actual data copied). Use this function to maintain graph contracts,
/// e.g when graph's input needs to be passed directly to output, like in Streaming mode.
///
///
/// Note: Function textual ID is "org.opencv.streaming.copy"
///
/// ## Parameters
/// * in: Input image
/// ## Returns
/// Copy of the input
#[inline]
pub fn copy(in_: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_copy_const_GMatR(in_.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Crops a 2D matrix.
///
/// The function crops the matrix by given cv::Rect.
///
/// Output matrix must be of the same depth as input one, size is specified by given rect size.
///
///
/// Note: Function textual ID is "org.opencv.core.transform.crop"
///
/// ## Parameters
/// * src: input matrix.
/// * rect: a rect to crop a matrix to
/// ## See also
/// resize
#[inline]
pub fn crop(src: &crate::gapi::GMat, rect: core::Rect) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_crop_const_GMatR_const_RectR(src.as_raw_GMat(), &rect, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Dilates an image by using 3 by 3 rectangular structuring element.
///
/// The function dilates the source image using the specified structuring element that determines the
/// shape of a pixel neighborhood over which the maximum is taken:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28x%2Cy%29%20%3D%20%20%5Cmax%20%5F%7B%28x%27%2Cy%27%29%3A%20%20%5C%2C%20%5Ctexttt%7Belement%7D%20%28x%27%2Cy%27%29%20%5Cne0%20%7D%20%5Ctexttt%7Bsrc%7D%20%28x%2Bx%27%2Cy%2By%27%29)
///
/// Dilation can be applied several (iterations) times. In case of multi-channel images, each channel is processed independently.
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], and [CV_32FC1].
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.dilate"
///
/// ## Parameters
/// * src: input image.
/// * iterations: number of times dilation is applied.
/// * borderType: pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of a constant border
/// ## See also
/// dilate, erode3x3
///
/// ## C++ default parameters
/// * iterations: 1
/// * border_type: BORDER_CONSTANT
/// * border_value: morphologyDefaultBorderValue()
#[inline]
pub fn dilate3x3(src: &crate::gapi::GMat, iterations: i32, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_dilate3x3_const_GMatR_int_int_const_ScalarR(src.as_raw_GMat(), iterations, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Dilates an image by using a specific structuring element.
///
/// The function dilates the source image using the specified structuring element that determines the
/// shape of a pixel neighborhood over which the maximum is taken:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28x%2Cy%29%20%3D%20%20%5Cmax%20%5F%7B%28x%27%2Cy%27%29%3A%20%20%5C%2C%20%5Ctexttt%7Belement%7D%20%28x%27%2Cy%27%29%20%5Cne0%20%7D%20%5Ctexttt%7Bsrc%7D%20%28x%2Bx%27%2Cy%2By%27%29)
///
/// Dilation can be applied several (iterations) times. In case of multi-channel images, each channel is processed independently.
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], and [CV_32FC1].
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.dilate"
///
/// ## Parameters
/// * src: input image.
/// * kernel: structuring element used for dilation; if elemenat=Mat(), a 3 x 3 rectangular
/// structuring element is used. Kernel can be created using getStructuringElement
/// * anchor: position of the anchor within the element; default value (-1, -1) means that the
/// anchor is at the element center.
/// * iterations: number of times dilation is applied.
/// * borderType: pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of a constant border
/// ## See also
/// erode, morphologyEx, getStructuringElement
///
/// ## C++ default parameters
/// * anchor: Point(-1,-1)
/// * iterations: 1
/// * border_type: BORDER_CONSTANT
/// * border_value: morphologyDefaultBorderValue()
#[inline]
pub fn dilate(src: &crate::gapi::GMat, kernel: &core::Mat, anchor: core::Point, iterations: i32, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_dilate_const_GMatR_const_MatR_const_PointR_int_int_const_ScalarR(src.as_raw_GMat(), kernel.as_raw_Mat(), &anchor, iterations, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Divides matrix by scalar.
///
/// The function divC divides each element of matrix src by given scalar value:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%28I%29%20%3D%20saturate%28src%28I%29%2Ascale%2Fdivisor%29%7D)
///
/// When divisor is zero, dst(I) will also be zero. Different channels of
/// multi-channel matrices are processed independently.
/// The matrices can be single or multi channel. Output matrix must have the same size and depth as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.divC"
/// ## Parameters
/// * src: input matrix.
/// * divisor: number to be divided by.
/// * ddepth: optional depth of the output matrix. If -1, the depth of output matrix will be the same as input matrix depth.
/// * scale: scale factor.
/// ## See also
/// add, sub, div, addWeighted
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn div_c(src: &crate::gapi::GMat, divisor: &crate::gapi::GScalar, scale: f64, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_divC_const_GMatR_const_GScalarR_double_int(src.as_raw_GMat(), divisor.as_raw_GScalar(), scale, ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Divides scalar by matrix.
///
/// The function divRC divides given scalar by each element of matrix src and keep the division result in new matrix of the same size and type as src:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%28I%29%20%3D%20saturate%28divident%2Ascale%2Fsrc%28I%29%29%7D)
///
/// When src(I) is zero, dst(I) will also be zero. Different channels of
/// multi-channel matrices are processed independently.
/// The matrices can be single or multi channel. Output matrix must have the same size and depth as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.divRC"
/// ## Parameters
/// * src: input matrix.
/// * divident: number to be divided.
/// * ddepth: optional depth of the output matrix. If -1, the depth of output matrix will be the same as input matrix depth.
/// * scale: scale factor
/// ## See also
/// add, sub, div, addWeighted
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn div_rc(divident: &crate::gapi::GScalar, src: &crate::gapi::GMat, scale: f64, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_divRC_const_GScalarR_const_GMatR_double_int(divident.as_raw_GScalar(), src.as_raw_GMat(), scale, ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs per-element division of two matrices.
///
/// The function divides one matrix by another:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%28I%29%20%3D%20saturate%28src1%28I%29%2Ascale%2Fsrc2%28I%29%29%7D)
///
/// For integer types when src2(I) is zero, dst(I) will also be zero.
/// Floating point case returns Inf/NaN (according to IEEE).
///
/// Different channels of
/// multi-channel matrices are processed independently.
/// The matrices can be single or multi channel. Output matrix must have the same size and depth as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.div"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix of the same size and depth as src1.
/// * scale: scalar factor.
/// * ddepth: optional depth of the output matrix; you can only pass -1 when src1.depth() == src2.depth().
/// ## See also
/// mul, add, sub
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn div(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat, scale: f64, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_div_const_GMatR_const_GMatR_double_int(src1.as_raw_GMat(), src2.as_raw_GMat(), scale, ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Equalizes the histogram of a grayscale image.
///
/// //!
///
/// The function equalizes the histogram of the input image using the following algorithm:
///
/// - Calculate the histogram ![inline formula](https://latex.codecogs.com/png.latex?H) for src .
/// - Normalize the histogram so that the sum of histogram bins is 255.
/// - Compute the integral of the histogram:
/// ![block formula](https://latex.codecogs.com/png.latex?H%27%5Fi%20%3D%20%20%5Csum%20%5F%7B0%20%20%5Cle%20j%20%3C%20i%7D%20H%28j%29)
/// - Transform the image using ![inline formula](https://latex.codecogs.com/png.latex?H%27) as a look-up table: ![inline formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%28x%2Cy%29%20%3D%20H%27%28%5Ctexttt%7Bsrc%7D%28x%2Cy%29%29)
///
/// The algorithm normalizes the brightness and increases the contrast of the image.
///
/// Note:
/// - The returned image is of the same size and type as input.
/// - Function textual ID is "org.opencv.imgproc.equalizeHist"
///
/// ## Parameters
/// * src: Source 8-bit single channel image.
#[inline]
pub fn equalize_hist(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_equalizeHist_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Erodes an image by using 3 by 3 rectangular structuring element.
///
/// The function erodes the source image using the rectangular structuring element with rectangle center as an anchor.
/// Erosion can be applied several (iterations) times. In case of multi-channel images, each channel is processed independently.
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], and [CV_32FC1].
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.erode"
///
/// ## Parameters
/// * src: input image
/// * iterations: number of times erosion is applied.
/// * borderType: pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of a constant border
/// ## See also
/// erode, dilate3x3
///
/// ## C++ default parameters
/// * iterations: 1
/// * border_type: BORDER_CONSTANT
/// * border_value: morphologyDefaultBorderValue()
#[inline]
pub fn erode3x3(src: &crate::gapi::GMat, iterations: i32, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_erode3x3_const_GMatR_int_int_const_ScalarR(src.as_raw_GMat(), iterations, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Erodes an image by using a specific structuring element.
///
/// The function erodes the source image using the specified structuring element that determines the
/// shape of a pixel neighborhood over which the minimum is taken:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28x%2Cy%29%20%3D%20%20%5Cmin%20%5F%7B%28x%27%2Cy%27%29%3A%20%20%5C%2C%20%5Ctexttt%7Belement%7D%20%28x%27%2Cy%27%29%20%5Cne0%20%7D%20%5Ctexttt%7Bsrc%7D%20%28x%2Bx%27%2Cy%2By%27%29)
///
/// Erosion can be applied several (iterations) times. In case of multi-channel images, each channel is processed independently.
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], and [CV_32FC1].
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.erode"
///
/// ## Parameters
/// * src: input image
/// * kernel: structuring element used for erosion; if `element=Mat()`, a `3 x 3` rectangular
/// structuring element is used. Kernel can be created using getStructuringElement.
/// * anchor: position of the anchor within the element; default value (-1, -1) means that the
/// anchor is at the element center.
/// * iterations: number of times erosion is applied.
/// * borderType: pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of a constant border
/// ## See also
/// dilate, morphologyEx
///
/// ## C++ default parameters
/// * anchor: Point(-1,-1)
/// * iterations: 1
/// * border_type: BORDER_CONSTANT
/// * border_value: morphologyDefaultBorderValue()
#[inline]
pub fn erode(src: &crate::gapi::GMat, kernel: &core::Mat, anchor: core::Point, iterations: i32, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_erode_const_GMatR_const_MatR_const_PointR_int_int_const_ScalarR(src.as_raw_GMat(), kernel.as_raw_Mat(), &anchor, iterations, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Convolves an image with the kernel.
///
/// The function applies an arbitrary linear filter to an image. When
/// the aperture is partially outside the image, the function interpolates outlier pixel values
/// according to the specified border mode.
///
/// The function does actually compute correlation, not the convolution:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28x%2Cy%29%20%3D%20%20%5Csum%20%5F%7B%20%5Csubstack%7B0%5Cleq%20x%27%20%3C%20%5Ctexttt%7Bkernel%2Ecols%7D%5C%5C%7B0%5Cleq%20y%27%20%3C%20%5Ctexttt%7Bkernel%2Erows%7D%7D%7D%7D%20%20%5Ctexttt%7Bkernel%7D%20%28x%27%2Cy%27%29%2A%20%5Ctexttt%7Bsrc%7D%20%28x%2Bx%27%2D%20%5Ctexttt%7Banchor%2Ex%7D%20%2Cy%2By%27%2D%20%5Ctexttt%7Banchor%2Ey%7D%20%29)
///
/// That is, the kernel is not mirrored around the anchor point. If you need a real convolution, flip
/// the kernel using flip and set the new anchor to `(kernel.cols - anchor.x - 1, kernel.rows -
/// anchor.y - 1)`.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
/// Output image must have the same size and number of channels an input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.filter2D"
///
/// ## Parameters
/// * src: input image.
/// * ddepth: desired depth of the destination image
/// * kernel: convolution kernel (or rather a correlation kernel), a single-channel floating point
/// matrix; if you want to apply different kernels to different channels, split the image into
/// separate color planes using split and process them individually.
/// * anchor: anchor of the kernel that indicates the relative position of a filtered point within
/// the kernel; the anchor should lie within the kernel; default value (-1,-1) means that the anchor
/// is at the kernel center.
/// * delta: optional value added to the filtered pixels before storing them in dst.
/// * borderType: pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of constant border type
/// ## See also
/// sepFilter
///
/// ## C++ default parameters
/// * anchor: Point(-1,-1)
/// * delta: Scalar(0)
/// * border_type: BORDER_DEFAULT
/// * border_value: Scalar(0)
#[inline]
pub fn filter_2d(src: &crate::gapi::GMat, ddepth: i32, kernel: &core::Mat, anchor: core::Point, delta: core::Scalar, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_filter2D_const_GMatR_int_const_MatR_const_PointR_const_ScalarR_int_const_ScalarR(src.as_raw_GMat(), ddepth, kernel.as_raw_Mat(), &anchor, &delta, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Flips a 2D matrix around vertical, horizontal, or both axes.
///
/// The function flips the matrix in one of three different ways (row
/// and column indices are 0-based):
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%5F%7Bij%7D%20%3D%0A%5Cleft%5C%7B%0A%5Cbegin%7Barray%7D%7Bl%20l%7D%0A%5Ctexttt%7Bsrc%7D%20%5F%7B%5Ctexttt%7Bsrc%2Erows%7D%2Di%2D1%2Cj%7D%20%26%20if%5C%3B%20%20%5Ctexttt%7BflipCode%7D%20%3D%200%20%5C%5C%0A%5Ctexttt%7Bsrc%7D%20%5F%7Bi%2C%20%5Ctexttt%7Bsrc%2Ecols%7D%20%2Dj%2D1%7D%20%26%20if%5C%3B%20%20%5Ctexttt%7BflipCode%7D%20%3E%200%20%5C%5C%0A%5Ctexttt%7Bsrc%7D%20%5F%7B%20%5Ctexttt%7Bsrc%2Erows%7D%20%2Di%2D1%2C%20%5Ctexttt%7Bsrc%2Ecols%7D%20%2Dj%2D1%7D%20%26%20if%5C%3B%20%5Ctexttt%7BflipCode%7D%20%3C%200%20%5C%5C%0A%5Cend%7Barray%7D%0A%5Cright%2E)
/// The example scenarios of using the function are the following:
/// * Vertical flipping of the image (flipCode == 0) to switch between
/// top-left and bottom-left image origin. This is a typical operation
/// in video processing on Microsoft Windows\* OS.
/// * Horizontal flipping of the image with the subsequent horizontal
/// shift and absolute difference calculation to check for a
/// vertical-axis symmetry (flipCode \> 0).
/// * Simultaneous horizontal and vertical flipping of the image with
/// the subsequent shift and absolute difference calculation to check
/// for a central symmetry (flipCode \< 0).
/// * Reversing the order of point arrays (flipCode \> 0 or
/// flipCode == 0).
/// Output image must be of the same depth as input one, size should be correct for given flipCode.
///
///
/// Note: Function textual ID is "org.opencv.core.transform.flip"
///
/// ## Parameters
/// * src: input matrix.
/// * flipCode: a flag to specify how to flip the array; 0 means
/// flipping around the x-axis and positive value (for example, 1) means
/// flipping around y-axis. Negative value (for example, -1) means flipping
/// around both axes.
/// ## See also
/// remap
#[inline]
pub fn flip(src: &crate::gapi::GMat, flip_code: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_flip_const_GMatR_int(src.as_raw_GMat(), flip_code, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Blurs an image using a Gaussian filter.
///
/// The function filter2Ds the source image with the specified Gaussian kernel.
/// Output image must have the same type and number of channels an input image.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// - Function textual ID is "org.opencv.imgproc.filters.gaussianBlur"
///
/// ## Parameters
/// * src: input image;
/// * ksize: Gaussian kernel size. ksize.width and ksize.height can differ but they both must be
/// positive and odd. Or, they can be zero's and then they are computed from sigma.
/// * sigmaX: Gaussian kernel standard deviation in X direction.
/// * sigmaY: Gaussian kernel standard deviation in Y direction; if sigmaY is zero, it is set to be
/// equal to sigmaX, if both sigmas are zeros, they are computed from ksize.width and ksize.height,
/// respectively (see cv::getGaussianKernel for details); to fully control the result regardless of
/// possible future modifications of all this semantics, it is recommended to specify all of ksize,
/// sigmaX, and sigmaY.
/// * borderType: pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of constant border type
/// ## See also
/// sepFilter, boxFilter, medianBlur
///
/// ## C++ default parameters
/// * sigma_y: 0
/// * border_type: BORDER_DEFAULT
/// * border_value: Scalar(0)
#[inline]
pub fn gaussian_blur(src: &crate::gapi::GMat, ksize: core::Size, sigma_x: f64, sigma_y: f64, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_gaussianBlur_const_GMatR_const_SizeR_double_double_int_const_ScalarR(src.as_raw_GMat(), &ksize, sigma_x, sigma_y, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies a range-level threshold to each matrix element.
///
/// The function applies range-level thresholding to a single- or multiple-channel matrix.
/// It sets output pixel value to OxFF if the corresponding pixel value of input matrix is in specified range,or 0 otherwise.
///
/// Input and output matrices must be CV_8UC1.
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.inRange"
///
/// ## Parameters
/// * src: input matrix (CV_8UC1).
/// * threshLow: lower boundary value.
/// * threshUp: upper boundary value.
/// ## See also
/// threshold
#[inline]
pub fn in_range(src: &crate::gapi::GMat, thresh_low: &crate::gapi::GScalar, thresh_up: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_inRange_const_GMatR_const_GScalarR_const_GScalarR(src.as_raw_GMat(), thresh_low.as_raw_GScalar(), thresh_up.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the integral of an image.
///
/// The function calculates one or more integral images for the source image as follows:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bsum%7D%20%28X%2CY%29%20%3D%20%20%5Csum%20%5F%7Bx%3CX%2Cy%3CY%7D%20%20%5Ctexttt%7Bimage%7D%20%28x%2Cy%29)
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bsqsum%7D%20%28X%2CY%29%20%3D%20%20%5Csum%20%5F%7Bx%3CX%2Cy%3CY%7D%20%20%5Ctexttt%7Bimage%7D%20%28x%2Cy%29%5E2)
///
/// The function return integral image as ![inline formula](https://latex.codecogs.com/png.latex?%28W%2B1%29%5Ctimes%20%28H%2B1%29) , 32-bit integer or floating-point (32f or 64f) and
/// integral image for squared pixel values; it is ![inline formula](https://latex.codecogs.com/png.latex?%28W%2B1%29%5Ctimes%20%28H%2B%29), double-precision floating-point (64f) array.
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.integral"
///
/// ## Parameters
/// * src: input image.
/// * sdepth: desired depth of the integral and the tilted integral images, CV_32S, CV_32F, or
/// CV_64F.
/// * sqdepth: desired depth of the integral image of squared pixel values, CV_32F or CV_64F.
///
/// ## C++ default parameters
/// * sdepth: -1
/// * sqdepth: -1
#[inline]
pub fn integral(src: &crate::gapi::GMat, sdepth: i32, sqdepth: i32) -> Result<core::Tuple<(crate::gapi::GMat, crate::gapi::GMat)>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_integral_const_GMatR_int_int(src.as_raw_GMat(), sdepth, sqdepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Tuple::<(crate::gapi::GMat, crate::gapi::GMat)>::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies a mask to a matrix.
///
/// The function mask set value from given matrix if the corresponding pixel value in mask matrix set to true,
/// and set the matrix value to 0 otherwise.
///
/// Supported src matrix data types are [CV_8UC1], [CV_16SC1], [CV_16UC1]. Supported mask data type is [CV_8UC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.mask"
/// ## Parameters
/// * src: input matrix.
/// * mask: input mask matrix.
#[inline]
pub fn mask(src: &crate::gapi::GMat, mask: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_mask_const_GMatR_const_GMatR(src.as_raw_GMat(), mask.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates per-element maximum of two matrices.
///
/// The function max calculates the per-element maximum of two matrices of the same size, number of channels and depth:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Cmax%20%28%20%5Ctexttt%7Bsrc1%7D%20%28I%29%2C%20%5Ctexttt%7Bsrc2%7D%20%28I%29%29)
/// where I is a multi-dimensional index of matrix elements. In case of
/// multi-channel matrices, each channel is processed independently.
/// Output matrix must be of the same size and depth as src1.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.max"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix of the same size and depth as src1.
/// ## See also
/// min, compare, cmpEQ, cmpGT, cmpGE
#[inline]
pub fn max(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_max_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates an average (mean) of matrix elements.
///
/// The function mean calculates the mean value M of matrix elements,
/// independently for each channel, and return it.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.mean"
/// ## Parameters
/// * src: input matrix.
/// ## See also
/// countNonZero, min, max
#[inline]
pub fn mean(src: &crate::gapi::GMat) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_mean_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// Blurs an image using the median filter.
///
/// The function smoothes an image using the median filter with the ![inline formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bksize%7D%20%5Ctimes%0A%5Ctexttt%7Bksize%7D) aperture. Each channel of a multi-channel image is processed independently.
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - Rounding to nearest even is procedeed if hardware supports it, if not - to nearest.
/// The median filter uses cv::BORDER_REPLICATE internally to cope with border pixels, see cv::BorderTypes
/// - Function textual ID is "org.opencv.imgproc.filters.medianBlur"
///
/// ## Parameters
/// * src: input matrix (image)
/// * ksize: aperture linear size; it must be odd and greater than 1, for example: 3, 5, 7 ...
/// ## See also
/// boxFilter, gaussianBlur
#[inline]
pub fn median_blur(src: &crate::gapi::GMat, ksize: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_medianBlur_const_GMatR_int(src.as_raw_GMat(), ksize, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Creates one 3-channel matrix out of 3 single-channel ones.
///
/// The function merges several matrices to make a single multi-channel matrix. That is, each
/// element of the output matrix will be a concatenation of the elements of the input matrices, where
/// elements of i-th input matrix are treated as mv[i].channels()-element vectors.
/// Output matrix must be of [CV_8UC3] type.
///
/// The function split3 does the reverse operation.
///
///
/// Note:
/// - Function textual ID is "org.opencv.core.transform.merge3"
///
/// ## Parameters
/// * src1: first input [CV_8UC1] matrix to be merged.
/// * src2: second input [CV_8UC1] matrix to be merged.
/// * src3: third input [CV_8UC1] matrix to be merged.
/// ## See also
/// merge4, split4, split3
#[inline]
pub fn merge3(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat, src3: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_merge3_const_GMatR_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), src3.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Creates one 4-channel matrix out of 4 single-channel ones.
///
/// The function merges several matrices to make a single multi-channel matrix. That is, each
/// element of the output matrix will be a concatenation of the elements of the input matrices, where
/// elements of i-th input matrix are treated as mv[i].channels()-element vectors.
/// Output matrix must be of [CV_8UC4] type.
///
/// The function split4 does the reverse operation.
///
///
/// Note:
/// - Function textual ID is "org.opencv.core.transform.merge4"
///
/// ## Parameters
/// * src1: first input [CV_8UC1] matrix to be merged.
/// * src2: second input [CV_8UC1] matrix to be merged.
/// * src3: third input [CV_8UC1] matrix to be merged.
/// * src4: fourth input [CV_8UC1] matrix to be merged.
/// ## See also
/// merge3, split4, split3
#[inline]
pub fn merge4(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat, src3: &crate::gapi::GMat, src4: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_merge4_const_GMatR_const_GMatR_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), src3.as_raw_GMat(), src4.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates per-element minimum of two matrices.
///
/// The function min calculates the per-element minimum of two matrices of the same size, number of channels and depth:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Cmin%20%28%20%5Ctexttt%7Bsrc1%7D%20%28I%29%2C%20%5Ctexttt%7Bsrc2%7D%20%28I%29%29)
/// where I is a multi-dimensional index of matrix elements. In case of
/// multi-channel matrices, each channel is processed independently.
/// Output matrix must be of the same size and depth as src1.
///
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.min"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix of the same size and depth as src1.
/// ## See also
/// max, cmpEQ, cmpLT, cmpLE
#[inline]
pub fn min(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_min_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Performs advanced morphological transformations.
///
/// The function can perform advanced morphological transformations using an erosion and dilation as
/// basic operations.
///
/// Any of the operations can be done in-place. In case of multi-channel images, each channel is
/// processed independently.
///
///
/// Note:
/// - Function textual ID is "org.opencv.imgproc.filters.morphologyEx"
/// - The number of iterations is the number of times erosion or dilatation operation will be
/// applied. For instance, an opening operation (#MORPH_OPEN) with two iterations is equivalent to
/// apply successively: erode -> erode -> dilate -> dilate
/// (and not erode -> dilate -> erode -> dilate).
///
/// ## Parameters
/// * src: Input image.
/// * op: Type of a morphological operation, see #MorphTypes
/// * kernel: Structuring element. It can be created using #getStructuringElement.
/// * anchor: Anchor position within the element. Both negative values mean that the anchor is at
/// the kernel center.
/// * iterations: Number of times erosion and dilation are applied.
/// * borderType: Pixel extrapolation method, see #BorderTypes. #BORDER_WRAP is not supported.
/// * borderValue: Border value in case of a constant border. The default value has a special
/// meaning.
/// ## See also
/// dilate, erode, getStructuringElement
///
/// ## C++ default parameters
/// * anchor: Point(-1,-1)
/// * iterations: 1
/// * border_type: BORDER_CONSTANT
/// * border_value: morphologyDefaultBorderValue()
#[inline]
pub fn morphology_ex(src: &crate::gapi::GMat, op: crate::imgproc::MorphTypes, kernel: &core::Mat, anchor: core::Point, iterations: i32, border_type: core::BorderTypes, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_morphologyEx_const_GMatR_const_MorphTypes_const_MatR_const_PointR_const_int_const_BorderTypes_const_ScalarR(src.as_raw_GMat(), op, kernel.as_raw_Mat(), &anchor, iterations, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Multiplies matrix by scalar.
///
/// The function mulC multiplies each element of matrix src by given scalar value:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7Bsaturate%7D%20%28%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%5Ccdot%20%5Ctexttt%7Bmultiplier%7D%20%29)
///
/// The matrices can be single or multi channel. Output matrix must have the same size as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.mulC"
/// ## Parameters
/// * src: input matrix.
/// * multiplier: factor to be multiplied.
/// * ddepth: optional depth of the output matrix. If -1, the depth of output matrix will be the same as input matrix depth.
/// ## See also
/// add, sub, div, addWeighted
///
/// ## Overloaded parameters
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn mul_c_1(src: &crate::gapi::GMat, multiplier: &crate::gapi::GScalar, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_mulC_const_GMatR_const_GScalarR_int(src.as_raw_GMat(), multiplier.as_raw_GScalar(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Multiplies matrix by scalar.
///
/// The function mulC multiplies each element of matrix src by given scalar value:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7Bsaturate%7D%20%28%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%5Ccdot%20%5Ctexttt%7Bmultiplier%7D%20%29)
///
/// The matrices can be single or multi channel. Output matrix must have the same size as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.mulC"
/// ## Parameters
/// * src: input matrix.
/// * multiplier: factor to be multiplied.
/// * ddepth: optional depth of the output matrix. If -1, the depth of output matrix will be the same as input matrix depth.
/// ## See also
/// add, sub, div, addWeighted
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn mul_c(src: &crate::gapi::GMat, multiplier: f64, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_mulC_const_GMatR_double_int(src.as_raw_GMat(), multiplier, ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Multiplies matrix by scalar.
///
/// The function mulC multiplies each element of matrix src by given scalar value:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7Bsaturate%7D%20%28%20%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%5Ccdot%20%5Ctexttt%7Bmultiplier%7D%20%29)
///
/// The matrices can be single or multi channel. Output matrix must have the same size as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.mulC"
/// ## Parameters
/// * src: input matrix.
/// * multiplier: factor to be multiplied.
/// * ddepth: optional depth of the output matrix. If -1, the depth of output matrix will be the same as input matrix depth.
/// ## See also
/// add, sub, div, addWeighted
///
/// ## Overloaded parameters
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn mul_c_2(multiplier: &crate::gapi::GScalar, src: &crate::gapi::GMat, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_mulC_const_GScalarR_const_GMatR_int(multiplier.as_raw_GScalar(), src.as_raw_GMat(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the per-element scaled product of two matrices.
///
/// The function mul calculates the per-element product of two matrices:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7Bsaturate%7D%20%28%20%5Ctexttt%7Bscale%7D%20%5Ccdot%20%5Ctexttt%7Bsrc1%7D%20%28I%29%20%20%5Ccdot%20%5Ctexttt%7Bsrc2%7D%20%28I%29%29)
///
/// If src1.depth() == src2.depth(), ddepth can be set to the default -1. In this case, the output matrix will have
/// the same depth as the input matrices. The matrices can be single or multi channel.
/// Output matrix must have the same size as input matrices.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.mul"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix of the same size and the same depth as src1.
/// * scale: optional scale factor.
/// * ddepth: optional depth of the output matrix.
/// ## See also
/// add, sub, div, addWeighted
///
/// ## C++ default parameters
/// * scale: 1.0
/// * ddepth: -1
#[inline]
pub fn mul(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat, scale: f64, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_mul_const_GMatR_const_GMatR_double_int(src1.as_raw_GMat(), src2.as_raw_GMat(), scale, ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the absolute infinite norm of a matrix.
///
/// This version of normInf calculates the absolute infinite norm of src.
///
/// As example for one array consider the function ![inline formula](https://latex.codecogs.com/png.latex?r%28x%29%3D%20%5Cbegin%7Bpmatrix%7D%20x%20%5C%5C%201%2Dx%20%5Cend%7Bpmatrix%7D%2C%20x%20%5Cin%20%5B%2D1%3B1%5D).
/// The ![inline formula](https://latex.codecogs.com/png.latex?%20L%5F%7B%5Cinfty%7D%20) norm for the sample value ![inline formula](https://latex.codecogs.com/png.latex?r%28%2D1%29%20%3D%20%5Cbegin%7Bpmatrix%7D%20%2D1%20%5C%5C%202%20%5Cend%7Bpmatrix%7D)
/// is calculated as follows
/// \f{align*}
/// \| r(-1) \|_{L_\infty} &= \max(|-1|,|2|) = 2
/// \f}
/// and for ![inline formula](https://latex.codecogs.com/png.latex?r%280%2E5%29%20%3D%20%5Cbegin%7Bpmatrix%7D%200%2E5%20%5C%5C%200%2E5%20%5Cend%7Bpmatrix%7D) the calculation is
/// \f{align*}
/// \| r(0.5) \|_{L_\infty} &= \max(|0.5|,|0.5|) = 0.5.
/// \f}
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.norminf"
/// ## Parameters
/// * src: input matrix.
/// ## See also
/// normL1, normL2
#[inline]
pub fn norm_inf(src: &crate::gapi::GMat) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_normInf_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the absolute L1 norm of a matrix.
///
/// This version of normL1 calculates the absolute L1 norm of src.
///
/// As example for one array consider the function ![inline formula](https://latex.codecogs.com/png.latex?r%28x%29%3D%20%5Cbegin%7Bpmatrix%7D%20x%20%5C%5C%201%2Dx%20%5Cend%7Bpmatrix%7D%2C%20x%20%5Cin%20%5B%2D1%3B1%5D).
/// The ![inline formula](https://latex.codecogs.com/png.latex?%20L%5F%7B1%7D%20) norm for the sample value ![inline formula](https://latex.codecogs.com/png.latex?r%28%2D1%29%20%3D%20%5Cbegin%7Bpmatrix%7D%20%2D1%20%5C%5C%202%20%5Cend%7Bpmatrix%7D)
/// is calculated as follows
/// \f{align*}
/// \| r(-1) \|_{L_1} &= |-1| + |2| = 3 \\
/// \f}
/// and for ![inline formula](https://latex.codecogs.com/png.latex?r%280%2E5%29%20%3D%20%5Cbegin%7Bpmatrix%7D%200%2E5%20%5C%5C%200%2E5%20%5Cend%7Bpmatrix%7D) the calculation is
/// \f{align*}
/// \| r(0.5) \|_{L_1} &= |0.5| + |0.5| = 1 \\
/// \f}
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.norml1"
/// ## Parameters
/// * src: input matrix.
/// ## See also
/// normL2, normInf
#[inline]
pub fn norm_l1(src: &crate::gapi::GMat) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_normL1_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the absolute L2 norm of a matrix.
///
/// This version of normL2 calculates the absolute L2 norm of src.
///
/// As example for one array consider the function ![inline formula](https://latex.codecogs.com/png.latex?r%28x%29%3D%20%5Cbegin%7Bpmatrix%7D%20x%20%5C%5C%201%2Dx%20%5Cend%7Bpmatrix%7D%2C%20x%20%5Cin%20%5B%2D1%3B1%5D).
/// The ![inline formula](https://latex.codecogs.com/png.latex?%20L%5F%7B2%7D%20) norm for the sample value ![inline formula](https://latex.codecogs.com/png.latex?r%28%2D1%29%20%3D%20%5Cbegin%7Bpmatrix%7D%20%2D1%20%5C%5C%202%20%5Cend%7Bpmatrix%7D)
/// is calculated as follows
/// \f{align*}
/// \| r(-1) \|_{L_2} &= \sqrt{(-1)^{2} + (2)^{2}} = \sqrt{5} \\
/// \f}
/// and for ![inline formula](https://latex.codecogs.com/png.latex?r%280%2E5%29%20%3D%20%5Cbegin%7Bpmatrix%7D%200%2E5%20%5C%5C%200%2E5%20%5Cend%7Bpmatrix%7D) the calculation is
/// \f{align*}
/// \| r(0.5) \|_{L_2} &= \sqrt{(0.5)^{2} + (0.5)^{2}} = \sqrt{0.5} \\
/// \f}
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
/// Note: Function textual ID is "org.opencv.core.matrixop.norml2"
/// ## Parameters
/// * src: input matrix.
/// ## See also
/// normL1, normInf
#[inline]
pub fn norm_l2(src: &crate::gapi::GMat) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_normL2_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// Normalizes the norm or value range of an array.
///
/// The function normalizes scale and shift the input array elements so that
/// ![block formula](https://latex.codecogs.com/png.latex?%5C%7C%20%5Ctexttt%7Bdst%7D%20%5C%7C%20%5F%7BL%5Fp%7D%3D%20%5Ctexttt%7Balpha%7D)
/// (where p=Inf, 1 or 2) when normType=NORM_INF, NORM_L1, or NORM_L2, respectively; or so that
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cmin%20%5FI%20%20%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7Balpha%7D%20%2C%20%5C%2C%20%5C%2C%20%5Cmax%20%5FI%20%20%5Ctexttt%7Bdst%7D%20%28I%29%3D%20%5Ctexttt%7Bbeta%7D)
/// when normType=NORM_MINMAX (for dense arrays only).
///
///
/// Note: Function textual ID is "org.opencv.core.normalize"
///
/// ## Parameters
/// * src: input array.
/// * alpha: norm value to normalize to or the lower range boundary in case of the range
/// normalization.
/// * beta: upper range boundary in case of the range normalization; it is not used for the norm
/// normalization.
/// * norm_type: normalization type (see cv::NormTypes).
/// * ddepth: when negative, the output array has the same type as src; otherwise, it has the same
/// number of channels as src and the depth =ddepth.
/// ## See also
/// norm, Mat::convertTo
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn normalize(src: &crate::gapi::GMat, alpha: f64, beta: f64, norm_type: i32, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_normalize_const_GMatR_double_double_int_int(src.as_raw_GMat(), alpha, beta, norm_type, ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the rotation angle of 2D vectors.
///
/// The function cv::phase calculates the rotation angle of each 2D vector that
/// is formed from the corresponding elements of x and y :
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bangle%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Batan2%7D%20%28%20%5Ctexttt%7By%7D%20%28I%29%2C%20%5Ctexttt%7Bx%7D%20%28I%29%29)
///
/// The angle estimation accuracy is about 0.3 degrees. When x(I)=y(I)=0 ,
/// the corresponding angle(I) is set to 0.
/// ## Parameters
/// * x: input floating-point array of x-coordinates of 2D vectors.
/// * y: input array of y-coordinates of 2D vectors; it must have the
/// same size and the same type as x.
/// * angleInDegrees: when true, the function calculates the angle in
/// degrees, otherwise, they are measured in radians.
/// ## Returns
/// array of vector angles; it has the same size and same type as x.
///
/// ## C++ default parameters
/// * angle_in_degrees: false
#[inline]
pub fn phase(x: &crate::gapi::GMat, y: &crate::gapi::GMat, angle_in_degrees: bool) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_phase_const_GMatR_const_GMatR_bool(x.as_raw_GMat(), y.as_raw_GMat(), angle_in_degrees, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates x and y coordinates of 2D vectors from their magnitude and angle.
///
/// The function polarToCart calculates the Cartesian coordinates of each 2D
/// vector represented by the corresponding elements of magnitude and angle:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Cbegin%7Barray%7D%7Bl%7D%20%5Ctexttt%7Bx%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bmagnitude%7D%20%28I%29%20%5Ccos%20%28%20%5Ctexttt%7Bangle%7D%20%28I%29%29%20%5C%5C%20%5Ctexttt%7By%7D%20%28I%29%20%3D%20%20%5Ctexttt%7Bmagnitude%7D%20%28I%29%20%5Csin%20%28%20%5Ctexttt%7Bangle%7D%20%28I%29%29%20%5C%5C%20%5Cend%7Barray%7D)
///
/// The relative accuracy of the estimated coordinates is about 1e-6.
///
/// First output is a matrix of x-coordinates of 2D vectors.
/// Second output is a matrix of y-coordinates of 2D vectors.
/// Both output must have the same size and depth as input matrices.
///
///
/// Note: Function textual ID is "org.opencv.core.math.polarToCart"
///
/// ## Parameters
/// * magnitude: input floating-point [CV_32FC1] matrix (1xN) of magnitudes of 2D vectors;
/// * angle: input floating-point [CV_32FC1] matrix (1xN) of angles of 2D vectors.
/// * angleInDegrees: when true, the input angles are measured in
/// degrees, otherwise, they are measured in radians.
/// ## See also
/// cartToPolar, exp, log, pow, sqrt
///
/// ## C++ default parameters
/// * angle_in_degrees: false
#[inline]
pub fn polar_to_cart(magnitude: &crate::gapi::GMat, angle: &crate::gapi::GMat, angle_in_degrees: bool) -> Result<core::Tuple<(crate::gapi::GMat, crate::gapi::GMat)>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_polarToCart_const_GMatR_const_GMatR_bool(magnitude.as_raw_GMat(), angle.as_raw_GMat(), angle_in_degrees, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Tuple::<(crate::gapi::GMat, crate::gapi::GMat)>::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies a generic geometrical transformation to an image.
///
/// The function remap transforms the source image using the specified map:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28x%2Cy%29%20%3D%20%20%5Ctexttt%7Bsrc%7D%20%28map%5Fx%28x%2Cy%29%2Cmap%5Fy%28x%2Cy%29%29)
///
/// where values of pixels with non-integer coordinates are computed using one of available
/// interpolation methods. ![inline formula](https://latex.codecogs.com/png.latex?map%5Fx) and ![inline formula](https://latex.codecogs.com/png.latex?map%5Fy) can be encoded as separate floating-point maps
/// in ![inline formula](https://latex.codecogs.com/png.latex?map%5F1) and ![inline formula](https://latex.codecogs.com/png.latex?map%5F2) respectively, or interleaved floating-point maps of ![inline formula](https://latex.codecogs.com/png.latex?%28x%2Cy%29) in
/// ![inline formula](https://latex.codecogs.com/png.latex?map%5F1), or fixed-point maps created by using convertMaps. The reason you might want to
/// convert from floating to fixed-point representations of a map is that they can yield much faster
/// (\~2x) remapping operations. In the converted case, ![inline formula](https://latex.codecogs.com/png.latex?map%5F1) contains pairs (cvFloor(x),
/// cvFloor(y)) and ![inline formula](https://latex.codecogs.com/png.latex?map%5F2) contains indices in a table of interpolation coefficients.
/// Output image must be of the same size and depth as input one.
///
///
/// Note:
/// - Function textual ID is "org.opencv.core.transform.remap"
/// - Due to current implementation limitations the size of an input and output images should be less than 32767x32767.
///
/// ## Parameters
/// * src: Source image.
/// * map1: The first map of either (x,y) points or just x values having the type CV_16SC2,
/// CV_32FC1, or CV_32FC2.
/// * map2: The second map of y values having the type CV_16UC1, CV_32FC1, or none (empty map
/// if map1 is (x,y) points), respectively.
/// * interpolation: Interpolation method (see cv::InterpolationFlags). The methods #INTER_AREA
/// and #INTER_LINEAR_EXACT are not supported by this function.
/// * borderMode: Pixel extrapolation method (see cv::BorderTypes). When
/// borderMode=BORDER_TRANSPARENT, it means that the pixels in the destination image that
/// corresponds to the "outliers" in the source image are not modified by the function.
/// * borderValue: Value used in case of a constant border. By default, it is 0.
///
/// ## C++ default parameters
/// * border_mode: BORDER_CONSTANT
/// * border_value: Scalar()
#[inline]
pub fn remap(src: &crate::gapi::GMat, map1: &core::Mat, map2: &core::Mat, interpolation: i32, border_mode: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_remap_const_GMatR_const_MatR_const_MatR_int_int_const_ScalarR(src.as_raw_GMat(), map1.as_raw_Mat(), map2.as_raw_Mat(), interpolation, border_mode, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Resizes a planar image.
///
/// The function resizes the image src down to or up to the specified size.
/// Planar image memory layout is three planes laying in the memory contiguously,
/// so the image height should be plane_height*plane_number, image type is [CV_8UC1].
///
/// Output image size will have the size dsize, the depth of output is the same as of src.
///
///
/// Note: Function textual ID is "org.opencv.imgproc.transform.resizeP"
///
/// ## Parameters
/// * src: input image, must be of [CV_8UC1] type;
/// * dsize: output image size;
/// * interpolation: interpolation method, only cv::INTER_LINEAR is supported at the moment
/// ## See also
/// warpAffine, warpPerspective, remap, resize
///
/// ## C++ default parameters
/// * interpolation: cv::INTER_LINEAR
#[inline]
pub fn resize_p(src: &crate::gapi::GMatP, dsize: core::Size, interpolation: i32) -> Result<crate::gapi::GMatP> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_resizeP_const_GMatPR_const_SizeR_int(src.as_raw_GMatP(), &dsize, interpolation, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatP::opencv_from_extern(ret) };
Ok(ret)
}
/// Resizes an image.
///
/// The function resizes the image src down to or up to the specified size.
///
/// Output image size will have the size dsize (when dsize is non-zero) or the size computed from
/// src.size(), fx, and fy; the depth of output is the same as of src.
///
/// If you want to resize src so that it fits the pre-created dst,
/// you may call the function as follows:
/// ```C++
/// explicitly specify dsize=dst.size(); fx and fy will be computed from that.
/// resize(src, dst, dst.size(), 0, 0, interpolation);
/// ```
///
/// If you want to decimate the image by factor of 2 in each direction, you can call the function this
/// way:
/// ```C++
/// specify fx and fy and let the function compute the destination image size.
/// resize(src, dst, Size(), 0.5, 0.5, interpolation);
/// ```
///
/// To shrink an image, it will generally look best with cv::INTER_AREA interpolation, whereas to
/// enlarge an image, it will generally look best with cv::INTER_CUBIC (slow) or cv::INTER_LINEAR
/// (faster but still looks OK).
///
///
/// Note: Function textual ID is "org.opencv.imgproc.transform.resize"
///
/// ## Parameters
/// * src: input image.
/// * dsize: output image size; if it equals zero, it is computed as:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdsize%20%3D%20Size%28round%28fx%2Asrc%2Ecols%29%2C%20round%28fy%2Asrc%2Erows%29%29%7D)
/// Either dsize or both fx and fy must be non-zero.
/// * fx: scale factor along the horizontal axis; when it equals 0, it is computed as
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7B%28double%29dsize%2Ewidth%2Fsrc%2Ecols%7D)
/// * fy: scale factor along the vertical axis; when it equals 0, it is computed as
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7B%28double%29dsize%2Eheight%2Fsrc%2Erows%7D)
/// * interpolation: interpolation method, see cv::InterpolationFlags
/// ## See also
/// warpAffine, warpPerspective, remap, resizeP
///
/// ## C++ default parameters
/// * fx: 0
/// * fy: 0
/// * interpolation: INTER_LINEAR
#[inline]
pub fn resize(src: &crate::gapi::GMat, dsize: core::Size, fx: f64, fy: f64, interpolation: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_resize_const_GMatR_const_SizeR_double_double_int(src.as_raw_GMat(), &dsize, fx, fy, interpolation, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Select values from either first or second of input matrices by given mask.
/// The function set to the output matrix either the value from the first input matrix if corresponding value of mask matrix is 255,
/// or value from the second input matrix (if value of mask matrix set to 0).
///
/// Input mask matrix must be of [CV_8UC1] type, two other inout matrices and output matrix should be of the same type. The size should
/// be the same for all input and output matrices.
/// Supported input matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.pixelwise.select"
///
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
/// * mask: mask input matrix.
#[inline]
pub fn select(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat, mask: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_select_const_GMatR_const_GMatR_const_GMatR(src1.as_raw_GMat(), src2.as_raw_GMat(), mask.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies a separable linear filter to a matrix(image).
///
/// The function applies a separable linear filter to the matrix. That is, first, every row of src is
/// filtered with the 1D kernel kernelX. Then, every column of the result is filtered with the 1D
/// kernel kernelY. The final result is returned.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
/// Output image must have the same type, size, and number of channels as the input image.
///
/// Note:
/// - In case of floating-point computation, rounding to nearest even is procedeed
/// if hardware supports it (if not - to nearest value).
/// - Function textual ID is "org.opencv.imgproc.filters.sepfilter"
/// ## Parameters
/// * src: Source image.
/// * ddepth: desired depth of the destination image (the following combinations of src.depth() and ddepth are supported:
///
/// src.depth() = CV_8U, ddepth = -1/CV_16S/CV_32F/CV_64F
/// src.depth() = CV_16U/CV_16S, ddepth = -1/CV_32F/CV_64F
/// src.depth() = CV_32F, ddepth = -1/CV_32F/CV_64F
/// src.depth() = CV_64F, ddepth = -1/CV_64F
///
/// when ddepth=-1, the output image will have the same depth as the source)
/// * kernelX: Coefficients for filtering each row.
/// * kernelY: Coefficients for filtering each column.
/// * anchor: Anchor position within the kernel. The default value ![inline formula](https://latex.codecogs.com/png.latex?%28%2D1%2C%2D1%29) means that the anchor
/// is at the kernel center.
/// * delta: Value added to the filtered results before storing them.
/// * borderType: Pixel extrapolation method, see cv::BorderTypes
/// * borderValue: border value in case of constant border type
/// ## See also
/// boxFilter, gaussianBlur, medianBlur
///
/// ## C++ default parameters
/// * border_type: BORDER_DEFAULT
/// * border_value: Scalar(0)
#[inline]
pub fn sep_filter(src: &crate::gapi::GMat, ddepth: i32, kernel_x: &core::Mat, kernel_y: &core::Mat, anchor: core::Point, delta: core::Scalar, border_type: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_sepFilter_const_GMatR_int_const_MatR_const_MatR_const_PointR_const_ScalarR_int_const_ScalarR(src.as_raw_GMat(), ddepth, kernel_x.as_raw_Mat(), kernel_y.as_raw_Mat(), &anchor, &delta, border_type, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Divides a 3-channel matrix into 3 single-channel matrices.
///
/// The function splits a 3-channel matrix into 3 single-channel matrices:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bmv%7D%20%5Bc%5D%28I%29%20%3D%20%20%5Ctexttt%7Bsrc%7D%20%28I%29%5Fc)
///
/// All output matrices must be of [CV_8UC1] type.
///
/// The function merge3 does the reverse operation.
///
///
/// Note:
/// - Function textual ID is "org.opencv.core.transform.split3"
///
/// ## Parameters
/// * src: input [CV_8UC3] matrix.
/// ## See also
/// split4, merge3, merge4
#[inline]
pub fn split3(src: &crate::gapi::GMat) -> Result<core::Tuple<(crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat)>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_split3_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Tuple::<(crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat)>::opencv_from_extern(ret) };
Ok(ret)
}
/// Divides a 4-channel matrix into 4 single-channel matrices.
///
/// The function splits a 4-channel matrix into 4 single-channel matrices:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bmv%7D%20%5Bc%5D%28I%29%20%3D%20%20%5Ctexttt%7Bsrc%7D%20%28I%29%5Fc)
///
/// All output matrices must be of [CV_8UC1] type.
///
/// The function merge4 does the reverse operation.
///
///
/// Note:
/// - Function textual ID is "org.opencv.core.transform.split4"
///
/// ## Parameters
/// * src: input [CV_8UC4] matrix.
/// ## See also
/// split3, merge3, merge4
#[inline]
pub fn split4(src: &crate::gapi::GMat) -> Result<core::Tuple<(crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat)>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_split4_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Tuple::<(crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat, crate::gapi::GMat)>::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates a square root of array elements.
///
/// The function cv::gapi::sqrt calculates a square root of each input array element.
/// In case of multi-channel arrays, each channel is processed
/// independently. The accuracy is approximately the same as of the built-in
/// std::sqrt .
/// ## Parameters
/// * src: input floating-point array.
/// ## Returns
/// output array of the same size and type as src.
#[inline]
pub fn sqrt(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_sqrt_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Gets bgr plane from input frame
///
///
/// Note: Function textual ID is "org.opencv.streaming.BGR"
///
/// ## Parameters
/// * in: Input frame
/// ## Returns
/// Image in BGR format
#[inline]
pub fn bgr(in_: &crate::gapi::GFrame) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_streaming_BGR_const_GFrameR(in_.as_raw_GFrame(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Extracts UV plane from media frame.
///
/// Output image is 8-bit 2-channel image of [CV_8UC2].
///
///
/// Note: Function textual ID is "org.opencv.streaming.UV"
///
/// ## Parameters
/// * frame: input media frame.
#[inline]
pub fn uv(frame: &crate::gapi::GFrame) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_streaming_UV_const_GFrameR(frame.as_raw_GFrame(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Extracts Y plane from media frame.
///
/// Output image is 8-bit 1-channel image of [CV_8UC1].
///
///
/// Note: Function textual ID is "org.opencv.streaming.Y"
///
/// ## Parameters
/// * frame: input media frame.
#[inline]
pub fn y(frame: &crate::gapi::GFrame) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_streaming_Y_const_GFrameR(frame.as_raw_GFrame(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn desync_1(f: &crate::gapi::GFrame) -> Result<crate::gapi::GFrame> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_streaming_desync_const_GFrameR(f.as_raw_GFrame(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GFrame::opencv_from_extern(ret) };
Ok(ret)
}
/// Starts a desynchronized branch in the graph.
///
/// This operation takes a single G-API data object and returns a
/// graph-level "duplicate" of this object.
///
/// Operations which use this data object can be desynchronized
/// from the rest of the graph.
///
/// This operation has no effect when a GComputation is compiled with
/// regular cv::GComputation::compile(), since cv::GCompiled objects
/// always produce their full output vectors.
///
/// This operation only makes sense when a GComputation is compiled in
/// streaming mode with cv::GComputation::compileStreaming(). If this
/// operation is used and there are desynchronized outputs, the user
/// should use a special version of cv::GStreamingCompiled::pull()
/// which produces an array of cv::util::optional<> objects.
///
///
/// Note: This feature is highly experimental now and is currently
/// limited to a single GMat/GFrame argument only.
#[inline]
pub fn desync(g: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_streaming_desync_const_GMatR(g.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn kernels() -> Result<crate::gapi::GKernelPackage> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_streaming_kernels(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GKernelPackage::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the per-element difference between matrix and given scalar.
///
/// The function can be replaced with matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%5Ctexttt%7Bsrc%7D%20%2D%20%5Ctexttt%7Bc%7D)
///
/// Depth of the output matrix is determined by the ddepth parameter.
/// If ddepth is set to default -1, the depth of output matrix will be the same as the depth of input matrix.
/// The matrices can be single or multi channel. Output matrix must have the same size as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.subC"
/// ## Parameters
/// * src: first input matrix.
/// * c: scalar value to subtracted.
/// * ddepth: optional depth of the output matrix.
/// ## See also
/// add, addC, subRC
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn sub_c(src: &crate::gapi::GMat, c: &crate::gapi::GScalar, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_subC_const_GMatR_const_GScalarR_int(src.as_raw_GMat(), c.as_raw_GScalar(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the per-element difference between given scalar and the matrix.
///
/// The function can be replaced with matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%5Ctexttt%7Bc%7D%20%2D%20%5Ctexttt%7Bsrc%7D)
///
/// Depth of the output matrix is determined by the ddepth parameter.
/// If ddepth is set to default -1, the depth of output matrix will be the same as the depth of input matrix.
/// The matrices can be single or multi channel. Output matrix must have the same size as src.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.subRC"
/// ## Parameters
/// * c: scalar value to subtract from.
/// * src: input matrix to be subtracted.
/// * ddepth: optional depth of the output matrix.
/// ## See also
/// add, addC, subC
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn sub_rc(c: &crate::gapi::GScalar, src: &crate::gapi::GMat, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_subRC_const_GScalarR_const_GMatR_int(c.as_raw_GScalar(), src.as_raw_GMat(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates the per-element difference between two matrices.
///
/// The function sub calculates difference between two matrices, when both matrices have the same size and the same number of
/// channels:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%28I%29%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%28I%29%20%2D%20%20%5Ctexttt%7Bsrc2%7D%28I%29)
///
/// The function can be replaced with matrix expressions:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%3D%20%20%20%5Ctexttt%7Bsrc1%7D%20%2D%20%20%5Ctexttt%7Bsrc2%7D)
///
/// The input matrices and the output matrix can all have the same or different depths. For example, you
/// can subtract two 8-bit unsigned matrices store the result as a 16-bit signed matrix.
/// Depth of the output matrix is determined by the ddepth parameter.
/// If src1.depth() == src2.depth(), ddepth can be set to the default -1. In this case, the output matrix will have
/// the same depth as the input matrices. The matrices can be single or multi channel.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.math.sub"
/// ## Parameters
/// * src1: first input matrix.
/// * src2: second input matrix.
/// * ddepth: optional depth of the output matrix.
/// ## See also
/// add, addC
///
/// ## C++ default parameters
/// * ddepth: -1
#[inline]
pub fn sub(src1: &crate::gapi::GMat, src2: &crate::gapi::GMat, ddepth: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_sub_const_GMatR_const_GMatR_int(src1.as_raw_GMat(), src2.as_raw_GMat(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Calculates sum of all matrix elements.
///
/// The function sum calculates sum of all matrix elements, independently for each channel.
///
/// Supported matrix data types are [CV_8UC1], [CV_8UC3], [CV_16UC1], [CV_16SC1], [CV_32FC1].
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.sum"
/// ## Parameters
/// * src: input matrix.
/// ## See also
/// countNonZero, mean, min, max
#[inline]
pub fn sum(src: &crate::gapi::GMat) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_sum_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies a fixed-level threshold to each matrix element.
///
/// The function applies fixed-level thresholding to a single- or multiple-channel matrix.
/// The function is typically used to get a bi-level (binary) image out of a grayscale image ( cmp functions could be also used for
/// this purpose) or for removing a noise, that is, filtering out pixels with too small or too large
/// values. There are several types of thresholding supported by the function. They are determined by
/// type parameter.
///
/// Also, the special values cv::THRESH_OTSU or cv::THRESH_TRIANGLE may be combined with one of the
/// above values. In these cases, the function determines the optimal threshold value using the Otsu's
/// or Triangle algorithm and uses it instead of the specified thresh . The function returns the
/// computed threshold value in addititon to thresholded matrix.
/// The Otsu's and Triangle methods are implemented only for 8-bit matrices.
///
/// Input image should be single channel only in case of cv::THRESH_OTSU or cv::THRESH_TRIANGLE flags.
/// Output matrix must be of the same size and depth as src.
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.threshold"
///
/// ## Parameters
/// * src: input matrix ([CV_8UC1], [CV_8UC3], or [CV_32FC1]).
/// * thresh: threshold value.
/// * maxval: maximum value to use with the cv::THRESH_BINARY and cv::THRESH_BINARY_INV thresholding
/// types.
/// * type: thresholding type (see the cv::ThresholdTypes).
/// ## See also
/// min, max, cmpGT, cmpLE, cmpGE, cmpLT
#[inline]
pub fn threshold(src: &crate::gapi::GMat, thresh: &crate::gapi::GScalar, maxval: &crate::gapi::GScalar, typ: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_threshold_const_GMatR_const_GScalarR_const_GScalarR_int(src.as_raw_GMat(), thresh.as_raw_GScalar(), maxval.as_raw_GScalar(), typ, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies a fixed-level threshold to each matrix element.
///
/// The function applies fixed-level thresholding to a single- or multiple-channel matrix.
/// The function is typically used to get a bi-level (binary) image out of a grayscale image ( cmp functions could be also used for
/// this purpose) or for removing a noise, that is, filtering out pixels with too small or too large
/// values. There are several types of thresholding supported by the function. They are determined by
/// type parameter.
///
/// Also, the special values cv::THRESH_OTSU or cv::THRESH_TRIANGLE may be combined with one of the
/// above values. In these cases, the function determines the optimal threshold value using the Otsu's
/// or Triangle algorithm and uses it instead of the specified thresh . The function returns the
/// computed threshold value in addititon to thresholded matrix.
/// The Otsu's and Triangle methods are implemented only for 8-bit matrices.
///
/// Input image should be single channel only in case of cv::THRESH_OTSU or cv::THRESH_TRIANGLE flags.
/// Output matrix must be of the same size and depth as src.
///
///
/// Note: Function textual ID is "org.opencv.core.matrixop.threshold"
///
/// ## Parameters
/// * src: input matrix ([CV_8UC1], [CV_8UC3], or [CV_32FC1]).
/// * thresh: threshold value.
/// * maxval: maximum value to use with the cv::THRESH_BINARY and cv::THRESH_BINARY_INV thresholding
/// types.
/// * type: thresholding type (see the cv::ThresholdTypes).
/// ## See also
/// min, max, cmpGT, cmpLE, cmpGE, cmpLT
///
/// ## Overloaded parameters
///
/// This function applicable for all threshold types except CV_THRESH_OTSU and CV_THRESH_TRIANGLE
///
/// Note: Function textual ID is "org.opencv.core.matrixop.thresholdOT"
#[inline]
pub fn threshold_1(src: &crate::gapi::GMat, maxval: &crate::gapi::GScalar, typ: i32) -> Result<core::Tuple<(crate::gapi::GMat, crate::gapi::GScalar)>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_threshold_const_GMatR_const_GScalarR_int(src.as_raw_GMat(), maxval.as_raw_GScalar(), typ, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Tuple::<(crate::gapi::GMat, crate::gapi::GScalar)>::opencv_from_extern(ret) };
Ok(ret)
}
/// Transposes a matrix.
///
/// The function transposes the matrix:
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28i%2Cj%29%20%3D%20%20%5Ctexttt%7Bsrc%7D%20%28j%2Ci%29)
///
///
/// Note:
/// - Function textual ID is "org.opencv.core.transpose"
/// - No complex conjugation is done in case of a complex matrix. It should be done separately if needed.
///
/// ## Parameters
/// * src: input array.
#[inline]
pub fn transpose(src: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_transpose_const_GMatR(src.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies an affine transformation to an image.
///
/// The function warpAffine transforms the source image using the specified matrix:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28x%2Cy%29%20%3D%20%20%5Ctexttt%7Bsrc%7D%20%28%20%5Ctexttt%7BM%7D%20%5F%7B11%7D%20x%20%2B%20%20%5Ctexttt%7BM%7D%20%5F%7B12%7D%20y%20%2B%20%20%5Ctexttt%7BM%7D%20%5F%7B13%7D%2C%20%5Ctexttt%7BM%7D%20%5F%7B21%7D%20x%20%2B%20%20%5Ctexttt%7BM%7D%20%5F%7B22%7D%20y%20%2B%20%20%5Ctexttt%7BM%7D%20%5F%7B23%7D%29)
///
/// when the flag #WARP_INVERSE_MAP is set. Otherwise, the transformation is first inverted
/// with #invertAffineTransform and then put in the formula above instead of M. The function cannot
/// operate in-place.
///
/// ## Parameters
/// * src: input image.
/// * M: ![inline formula](https://latex.codecogs.com/png.latex?2%5Ctimes%203) transformation matrix.
/// * dsize: size of the output image.
/// * flags: combination of interpolation methods (see #InterpolationFlags) and the optional
/// flag #WARP_INVERSE_MAP that means that M is the inverse transformation (
/// ![inline formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%5Crightarrow%5Ctexttt%7Bsrc%7D) ).
/// * borderMode: pixel extrapolation method (see #BorderTypes);
/// borderMode=#BORDER_TRANSPARENT isn't supported
/// * borderValue: value used in case of a constant border; by default, it is 0.
/// ## See also
/// warpPerspective, resize, remap, getRectSubPix, transform
///
/// ## C++ default parameters
/// * flags: cv::INTER_LINEAR
/// * border_mode: cv::BORDER_CONSTANT
/// * border_value: Scalar()
#[inline]
pub fn warp_affine(src: &crate::gapi::GMat, m: &core::Mat, dsize: core::Size, flags: i32, border_mode: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_warpAffine_const_GMatR_const_MatR_const_SizeR_int_int_const_ScalarR(src.as_raw_GMat(), m.as_raw_Mat(), &dsize, flags, border_mode, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// Applies a perspective transformation to an image.
///
/// The function warpPerspective transforms the source image using the specified matrix:
///
/// ![block formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%20%28x%2Cy%29%20%3D%20%20%5Ctexttt%7Bsrc%7D%20%5Cleft%20%28%20%5Cfrac%7BM%5F%7B11%7D%20x%20%2B%20M%5F%7B12%7D%20y%20%2B%20M%5F%7B13%7D%7D%7BM%5F%7B31%7D%20x%20%2B%20M%5F%7B32%7D%20y%20%2B%20M%5F%7B33%7D%7D%20%2C%0A%20%20%20%20%20%5Cfrac%7BM%5F%7B21%7D%20x%20%2B%20M%5F%7B22%7D%20y%20%2B%20M%5F%7B23%7D%7D%7BM%5F%7B31%7D%20x%20%2B%20M%5F%7B32%7D%20y%20%2B%20M%5F%7B33%7D%7D%20%5Cright%20%29)
///
/// when the flag #WARP_INVERSE_MAP is set. Otherwise, the transformation is first inverted with invert
/// and then put in the formula above instead of M. The function cannot operate in-place.
///
/// ## Parameters
/// * src: input image.
/// * M: ![inline formula](https://latex.codecogs.com/png.latex?3%5Ctimes%203) transformation matrix.
/// * dsize: size of the output image.
/// * flags: combination of interpolation methods (#INTER_LINEAR or #INTER_NEAREST) and the
/// optional flag #WARP_INVERSE_MAP, that sets M as the inverse transformation (
/// ![inline formula](https://latex.codecogs.com/png.latex?%5Ctexttt%7Bdst%7D%5Crightarrow%5Ctexttt%7Bsrc%7D) ).
/// * borderMode: pixel extrapolation method (#BORDER_CONSTANT or #BORDER_REPLICATE).
/// * borderValue: value used in case of a constant border; by default, it equals 0.
/// ## See also
/// warpAffine, resize, remap, getRectSubPix, perspectiveTransform
///
/// ## C++ default parameters
/// * flags: cv::INTER_LINEAR
/// * border_mode: cv::BORDER_CONSTANT
/// * border_value: Scalar()
#[inline]
pub fn warp_perspective(src: &crate::gapi::GMat, m: &core::Mat, dsize: core::Size, flags: i32, border_mode: i32, border_value: core::Scalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_warpPerspective_const_GMatR_const_MatR_const_SizeR_int_int_const_ScalarR(src.as_raw_GMat(), m.as_raw_Mat(), &dsize, flags, border_mode, &border_value, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn add_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorA_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn add_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorA_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn add_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorA_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn div_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorD_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn div_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorD_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn div_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorD_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn equals_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorEQ_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn equals_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorEQ_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn equals_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorEQ_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn greater_than_or_equal_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorGE_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn greater_than_or_equal_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorGE_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn greater_than_or_equal_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorGE_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn greater_than_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorG_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn greater_than_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorG_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn greater_than_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorG_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn less_than_or_equal_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorLE_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn less_than_or_equal_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorLE_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn less_than_or_equal_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorLE_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn less_than_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorL_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn less_than_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorL_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn less_than_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorL_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn not_equals_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorNE_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn not_equals_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorNE_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn not_equals_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorNE_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn negate(lhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorNOTB_const_GMatR(lhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn or_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorOR_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn or_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorOR_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn or_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorOR_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn and_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorR_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn and_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorR_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn and_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorR_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn sub_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorS_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn sub_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorS_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn sub_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorS_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn xor_gmat_gmat(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorXOR_const_GMatR_const_GMatR(lhs.as_raw_GMat(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn xor_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorXOR_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn xor_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorXOR_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn mul_gmat_gscalar(lhs: &crate::gapi::GMat, rhs: &crate::gapi::GScalar) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorX_const_GMatR_const_GScalarR(lhs.as_raw_GMat(), rhs.as_raw_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn mul_gmat_f32(lhs: &crate::gapi::GMat, rhs: f32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorX_const_GMatR_float(lhs.as_raw_GMat(), rhs, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn mul_gscalar_gmat(lhs: &crate::gapi::GScalar, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorX_const_GScalarR_const_GMatR(lhs.as_raw_GScalar(), rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn mul_f32_gmat(lhs: f32, rhs: &crate::gapi::GMat) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_operatorX_float_const_GMatR(lhs, rhs.as_raw_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn validate_input_arg(arg: &crate::gapi::GRunArg) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_validate_input_arg_const_GRunArgR(arg.as_raw_GRunArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn validate_input_args(args: &crate::gapi::GRunArgs) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_validate_input_args_const_GRunArgsR(args.as_raw_VectorOfGRunArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Constant methods for [crate::gapi::GArg]
pub trait GArgTraitConst {
fn as_raw_GArg(&self) -> *const c_void;
#[inline]
fn kind(&self) -> crate::gapi::ArgKind {
return_send!(via ocvrs_return);
unsafe { sys::cv_GArg_getPropKind_const(self.as_raw_GArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
#[inline]
fn opaque_kind(&self) -> crate::gapi::OpaqueKind {
return_send!(via ocvrs_return);
unsafe { sys::cv_GArg_getPropOpaque_kind_const(self.as_raw_GArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
}
/// Mutable methods for [crate::gapi::GArg]
pub trait GArgTrait: crate::gapi::GArgTraitConst {
fn as_raw_mut_GArg(&mut self) -> *mut c_void;
/// ## C++ default parameters
/// * val: detail::ArgKind::OPAQUE_VAL
#[inline]
fn set_kind(&mut self, val: crate::gapi::ArgKind) {
let ret = unsafe { sys::cv_GArg_setPropKind_ArgKind(self.as_raw_mut_GArg(), val) };
ret
}
/// ## C++ default parameters
/// * val: detail::OpaqueKind::CV_UNKNOWN
#[inline]
fn set_opaque_kind(&mut self, val: crate::gapi::OpaqueKind) {
let ret = unsafe { sys::cv_GArg_setPropOpaque_kind_OpaqueKind(self.as_raw_mut_GArg(), val) };
ret
}
}
pub struct GArg {
ptr: *mut c_void
}
opencv_type_boxed! { GArg }
impl Drop for GArg {
fn drop(&mut self) {
extern "C" { fn cv_GArg_delete(instance: *mut c_void); }
unsafe { cv_GArg_delete(self.as_raw_mut_GArg()) };
}
}
unsafe impl Send for GArg {}
impl crate::gapi::GArgTraitConst for GArg {
#[inline] fn as_raw_GArg(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GArgTrait for GArg {
#[inline] fn as_raw_mut_GArg(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GArg {
#[inline]
pub fn default() -> Result<crate::gapi::GArg> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GArg_GArg(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GArg::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GArrayDesc]
pub trait GArrayDescTraitConst {
fn as_raw_GArrayDesc(&self) -> *const c_void;
#[inline]
fn equals(&self, unnamed: &crate::gapi::GArrayDesc) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GArrayDesc_operatorEQ_const_const_GArrayDescR(self.as_raw_GArrayDesc(), unnamed.as_raw_GArrayDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GArrayDesc]
pub trait GArrayDescTrait: crate::gapi::GArrayDescTraitConst {
fn as_raw_mut_GArrayDesc(&mut self) -> *mut c_void;
}
/// \addtogroup gapi_meta_args
pub struct GArrayDesc {
ptr: *mut c_void
}
opencv_type_boxed! { GArrayDesc }
impl Drop for GArrayDesc {
fn drop(&mut self) {
extern "C" { fn cv_GArrayDesc_delete(instance: *mut c_void); }
unsafe { cv_GArrayDesc_delete(self.as_raw_mut_GArrayDesc()) };
}
}
unsafe impl Send for GArrayDesc {}
impl crate::gapi::GArrayDescTraitConst for GArrayDesc {
#[inline] fn as_raw_GArrayDesc(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GArrayDescTrait for GArrayDesc {
#[inline] fn as_raw_mut_GArrayDesc(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GArrayDesc {
}
/// Constant methods for [crate::gapi::GCall]
pub trait GCallTraitConst {
fn as_raw_GCall(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GCall]
pub trait GCallTrait: crate::gapi::GCallTraitConst {
fn as_raw_mut_GCall(&mut self) -> *mut c_void;
/// ## C++ default parameters
/// * output: 0
#[inline]
fn yield_(&mut self, output: i32) -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCall_yield_int(self.as_raw_mut_GCall(), output, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
/// ## C++ default parameters
/// * output: 0
#[inline]
fn yield_p(&mut self, output: i32) -> Result<crate::gapi::GMatP> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCall_yieldP_int(self.as_raw_mut_GCall(), output, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatP::opencv_from_extern(ret) };
Ok(ret)
}
/// ## C++ default parameters
/// * output: 0
#[inline]
fn yield_scalar(&mut self, output: i32) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCall_yieldScalar_int(self.as_raw_mut_GCall(), output, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// ## C++ default parameters
/// * output: 0
#[inline]
fn yield_frame(&mut self, output: i32) -> Result<crate::gapi::GFrame> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCall_yieldFrame_int(self.as_raw_mut_GCall(), output, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GFrame::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn kernel(&mut self) -> Result<crate::gapi::GKernel> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCall_kernel(self.as_raw_mut_GCall(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GKernel::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn params(&mut self) -> Result<crate::gapi::any> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCall_params(self.as_raw_mut_GCall(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::any::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn set_args(&mut self, mut args: core::Vector<crate::gapi::GArg>) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCall_setArgs_vectorLGArgGRR(self.as_raw_mut_GCall(), args.as_raw_mut_VectorOfGArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct GCall {
ptr: *mut c_void
}
opencv_type_boxed! { GCall }
impl Drop for GCall {
fn drop(&mut self) {
extern "C" { fn cv_GCall_delete(instance: *mut c_void); }
unsafe { cv_GCall_delete(self.as_raw_mut_GCall()) };
}
}
unsafe impl Send for GCall {}
impl crate::gapi::GCallTraitConst for GCall {
#[inline] fn as_raw_GCall(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GCallTrait for GCall {
#[inline] fn as_raw_mut_GCall(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GCall {
#[inline]
pub fn new(k: &crate::gapi::GKernel) -> Result<crate::gapi::GCall> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCall_GCall_const_GKernelR(k.as_raw_GKernel(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GCall::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GCompileArg]
pub trait GCompileArgTraitConst {
fn as_raw_GCompileArg(&self) -> *const c_void;
#[inline]
fn tag(&self) -> String {
let ret = unsafe { sys::cv_GCompileArg_getPropTag_const(self.as_raw_GCompileArg()) };
let ret = unsafe { String::opencv_from_extern(ret) };
ret
}
}
/// Mutable methods for [crate::gapi::GCompileArg]
pub trait GCompileArgTrait: crate::gapi::GCompileArgTraitConst {
fn as_raw_mut_GCompileArg(&mut self) -> *mut c_void;
#[inline]
fn set_tag(&mut self, val: &str) {
extern_container_arg!(nofail mut val);
let ret = unsafe { sys::cv_GCompileArg_setPropTag_string(self.as_raw_mut_GCompileArg(), val.opencv_as_extern_mut()) };
ret
}
}
/// Represents an arbitrary compilation argument.
///
/// Any value can be wrapped into cv::GCompileArg, but only known ones
/// (to G-API or its backends) can be interpreted correctly.
///
/// Normally objects of this class shouldn't be created manually, use
/// cv::compile_args() function which automatically wraps everything
/// passed in (a variadic template parameter pack) into a vector of
/// cv::GCompileArg objects.
pub struct GCompileArg {
ptr: *mut c_void
}
opencv_type_boxed! { GCompileArg }
impl Drop for GCompileArg {
fn drop(&mut self) {
extern "C" { fn cv_GCompileArg_delete(instance: *mut c_void); }
unsafe { cv_GCompileArg_delete(self.as_raw_mut_GCompileArg()) };
}
}
unsafe impl Send for GCompileArg {}
impl crate::gapi::GCompileArgTraitConst for GCompileArg {
#[inline] fn as_raw_GCompileArg(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GCompileArgTrait for GCompileArg {
#[inline] fn as_raw_mut_GCompileArg(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GCompileArg {
#[inline]
pub fn default() -> crate::gapi::GCompileArg {
let ret = unsafe { sys::cv_GCompileArg_GCompileArg() };
let ret = unsafe { crate::gapi::GCompileArg::opencv_from_extern(ret) };
ret
}
}
impl Default for GCompileArg {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// Constant methods for [crate::gapi::GCompiled]
pub trait GCompiledTraitConst {
fn as_raw_GCompiled(&self) -> *const c_void;
/// Check if compiled object is valid (non-empty)
///
/// ## Returns
/// true if the object is runnable (valid), false otherwise
#[inline]
fn to_bool(&self) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_operator_bool_const(self.as_raw_GCompiled(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Check if the underlying backends support reshape or not.
///
/// ## Returns
/// true if supported, false otherwise.
#[inline]
fn can_reshape(&self) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_canReshape_const(self.as_raw_GCompiled(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GCompiled]
pub trait GCompiledTrait: crate::gapi::GCompiledTraitConst {
fn as_raw_mut_GCompiled(&mut self) -> *mut c_void;
/// Execute an unary computation
///
/// Run the compiled computation, a generic version.
///
/// ## Parameters
/// * ins: vector of inputs to process.
/// * outs: vector of outputs to produce.
///
/// Input/output vectors must have the same number of elements as
/// defined in the cv::GComputation protocol (at the moment of its
/// construction). Shapes of elements also must conform to protocol
/// (e.g. cv::Mat needs to be passed where cv::GMat has been
/// declared as input, and so on). Run-time exception is generated
/// otherwise.
///
/// Objects in output vector may remain empty (like cv::Mat) --
/// G-API will automatically initialize output objects to proper formats.
///
///
/// Note: Don't construct GRunArgs/GRunArgsP objects manually, use
/// cv::gin()/cv::gout() wrappers instead.
///
/// ## Overloaded parameters
///
/// * in: input cv::Mat for unary computation
/// * out: output cv::Mat for unary computation
/// process.
#[inline]
fn apply(&mut self, mut in_: core::Mat, out: &mut core::Mat) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_operator___Mat_MatR(self.as_raw_mut_GCompiled(), in_.as_raw_mut_Mat(), out.as_raw_mut_Mat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute an unary computation
///
/// Run the compiled computation, a generic version.
///
/// ## Parameters
/// * ins: vector of inputs to process.
/// * outs: vector of outputs to produce.
///
/// Input/output vectors must have the same number of elements as
/// defined in the cv::GComputation protocol (at the moment of its
/// construction). Shapes of elements also must conform to protocol
/// (e.g. cv::Mat needs to be passed where cv::GMat has been
/// declared as input, and so on). Run-time exception is generated
/// otherwise.
///
/// Objects in output vector may remain empty (like cv::Mat) --
/// G-API will automatically initialize output objects to proper formats.
///
///
/// Note: Don't construct GRunArgs/GRunArgsP objects manually, use
/// cv::gin()/cv::gout() wrappers instead.
///
/// ## Overloaded parameters
///
/// * in: input cv::Mat for unary computation
/// * out: output cv::Scalar for unary computation
/// process.
#[inline]
fn apply_1(&mut self, mut in_: core::Mat, out: &mut core::Scalar) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_operator___Mat_ScalarR(self.as_raw_mut_GCompiled(), in_.as_raw_mut_Mat(), out, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute a binary computation
///
/// Run the compiled computation, a generic version.
///
/// ## Parameters
/// * ins: vector of inputs to process.
/// * outs: vector of outputs to produce.
///
/// Input/output vectors must have the same number of elements as
/// defined in the cv::GComputation protocol (at the moment of its
/// construction). Shapes of elements also must conform to protocol
/// (e.g. cv::Mat needs to be passed where cv::GMat has been
/// declared as input, and so on). Run-time exception is generated
/// otherwise.
///
/// Objects in output vector may remain empty (like cv::Mat) --
/// G-API will automatically initialize output objects to proper formats.
///
///
/// Note: Don't construct GRunArgs/GRunArgsP objects manually, use
/// cv::gin()/cv::gout() wrappers instead.
///
/// ## Overloaded parameters
///
/// * in1: first input cv::Mat for binary computation
/// * in2: second input cv::Mat for binary computation
/// * out: output cv::Mat for binary computation
/// process.
#[inline]
fn apply_2(&mut self, mut in1: core::Mat, mut in2: core::Mat, out: &mut core::Mat) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_operator___Mat_Mat_MatR(self.as_raw_mut_GCompiled(), in1.as_raw_mut_Mat(), in2.as_raw_mut_Mat(), out.as_raw_mut_Mat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute an binary computation
///
/// Run the compiled computation, a generic version.
///
/// ## Parameters
/// * ins: vector of inputs to process.
/// * outs: vector of outputs to produce.
///
/// Input/output vectors must have the same number of elements as
/// defined in the cv::GComputation protocol (at the moment of its
/// construction). Shapes of elements also must conform to protocol
/// (e.g. cv::Mat needs to be passed where cv::GMat has been
/// declared as input, and so on). Run-time exception is generated
/// otherwise.
///
/// Objects in output vector may remain empty (like cv::Mat) --
/// G-API will automatically initialize output objects to proper formats.
///
///
/// Note: Don't construct GRunArgs/GRunArgsP objects manually, use
/// cv::gin()/cv::gout() wrappers instead.
///
/// ## Overloaded parameters
///
/// * in1: first input cv::Mat for binary computation
/// * in2: second input cv::Mat for binary computation
/// * out: output cv::Scalar for binary computation
/// process.
#[inline]
fn apply_3(&mut self, mut in1: core::Mat, mut in2: core::Mat, out: &mut core::Scalar) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_operator___Mat_Mat_ScalarR(self.as_raw_mut_GCompiled(), in1.as_raw_mut_Mat(), in2.as_raw_mut_Mat(), out, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute a computation with arbitrary number of
/// inputs/outputs.
///
/// Run the compiled computation, a generic version.
///
/// ## Parameters
/// * ins: vector of inputs to process.
/// * outs: vector of outputs to produce.
///
/// Input/output vectors must have the same number of elements as
/// defined in the cv::GComputation protocol (at the moment of its
/// construction). Shapes of elements also must conform to protocol
/// (e.g. cv::Mat needs to be passed where cv::GMat has been
/// declared as input, and so on). Run-time exception is generated
/// otherwise.
///
/// Objects in output vector may remain empty (like cv::Mat) --
/// G-API will automatically initialize output objects to proper formats.
///
///
/// Note: Don't construct GRunArgs/GRunArgsP objects manually, use
/// cv::gin()/cv::gout() wrappers instead.
///
/// ## Overloaded parameters
///
/// * ins: vector of input cv::Mat objects to process by the
/// computation.
/// * outs: vector of output cv::Mat objects to produce by the
/// computation.
///
/// Numbers of elements in ins/outs vectors must match numbers of
/// inputs/outputs which were used to define the source GComputation.
#[inline]
fn apply_4(&mut self, ins: &core::Vector<core::Mat>, outs: &core::Vector<core::Mat>) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_operator___const_vectorLMatGR_const_vectorLMatGR(self.as_raw_mut_GCompiled(), ins.as_raw_VectorOfMat(), outs.as_raw_VectorOfMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Prepare inner kernels states for a new video-stream.
///
/// GCompiled objects may be used to process video streams frame by frame.
/// In this case, a GCompiled is called on every image frame individually.
/// Starting OpenCV 4.4, some kernels in the graph may have their internal
/// states (see GAPI_OCV_KERNEL_ST for the OpenCV backend).
/// In this case, if user starts processing another video stream with
/// this GCompiled, this method needs to be called to let kernels re-initialize
/// their internal states to a new video stream.
#[inline]
fn prepare_for_new_stream(&mut self) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_prepareForNewStream(self.as_raw_mut_GCompiled(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// \addtogroup gapi_main_classes
/// /
///
/// Represents a compiled computation (graph). Can only be used
/// with image / data formats & resolutions it was compiled for, with
/// some exceptions.
///
/// This class represents a product of graph compilation (calling
/// cv::GComputation::compile()). Objects of this class actually do
/// data processing, and graph execution is incapsulated into objects
/// of this class. Execution model itself depends on kernels and
/// backends which were using during the compilation, see [gapi_compile_args] for details.
///
/// In a general case, GCompiled objects can be applied to data only in
/// that formats/resolutions they were compiled for (see [gapi_meta_args]). However, if the underlying backends allow, a
/// compiled object can be _reshaped_ to handle data (images) of
/// different resolution, though formats and types must remain the same.
///
/// GCompiled is very similar to `std::function<>` in its semantics --
/// running it looks like a function call in the user code.
///
/// At the moment, GCompiled objects are not reentrant -- generally,
/// the objects are stateful since graph execution itself is a stateful
/// process and this state is now maintained in GCompiled's own memory
/// (not on the process stack).
///
/// At the same time, two different GCompiled objects produced from the
/// single cv::GComputation are completely independent and can be used
/// concurrently.
/// ## See also
/// GStreamingCompiled
pub struct GCompiled {
ptr: *mut c_void
}
opencv_type_boxed! { GCompiled }
impl Drop for GCompiled {
fn drop(&mut self) {
extern "C" { fn cv_GCompiled_delete(instance: *mut c_void); }
unsafe { cv_GCompiled_delete(self.as_raw_mut_GCompiled()) };
}
}
unsafe impl Send for GCompiled {}
impl crate::gapi::GCompiledTraitConst for GCompiled {
#[inline] fn as_raw_GCompiled(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GCompiledTrait for GCompiled {
#[inline] fn as_raw_mut_GCompiled(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GCompiled {
/// Constructs an empty object
#[inline]
pub fn default() -> Result<crate::gapi::GCompiled> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GCompiled_GCompiled(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GCompiled::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GComputation]
pub trait GComputationTraitConst {
fn as_raw_GComputation(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GComputation]
pub trait GComputationTrait: crate::gapi::GComputationTraitConst {
fn as_raw_mut_GComputation(&mut self) -> *mut c_void;
/// @private -- Exclude this function from OpenCV documentation
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn apply(&mut self, callback: &crate::gapi::ExtractArgsCallback, mut args: crate::gapi::GCompileArgs) -> Result<core::Vector<crate::gapi::GRunArg>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_apply_const_ExtractArgsCallbackR_GCompileArgsRR(self.as_raw_mut_GComputation(), callback.as_raw_ExtractArgsCallback(), args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Vector::<crate::gapi::GRunArg>::opencv_from_extern(ret) };
Ok(ret)
}
/// @private -- Exclude this function from OpenCV documentation
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn apply_1(&mut self, ins: &core::Vector<core::Mat>, outs: &core::Vector<core::Mat>, mut args: crate::gapi::GCompileArgs) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_apply_const_vectorLMatGR_const_vectorLMatGR_GCompileArgsRR(self.as_raw_mut_GComputation(), ins.as_raw_VectorOfMat(), outs.as_raw_VectorOfMat(), args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute an unary computation (with compilation on the fly)
///
/// @private -- Exclude this function from OpenCV documentation
///
/// ## Overloaded parameters
///
/// ## Parameters
/// * in: input cv::Mat for unary computation
/// * out: output cv::Mat for unary computation
/// * args: compilation arguments for underlying compilation
/// process.
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn apply_2(&mut self, mut in_: core::Mat, out: &mut core::Mat, mut args: crate::gapi::GCompileArgs) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_apply_Mat_MatR_GCompileArgsRR(self.as_raw_mut_GComputation(), in_.as_raw_mut_Mat(), out.as_raw_mut_Mat(), args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute an unary computation (with compilation on the fly)
///
/// @private -- Exclude this function from OpenCV documentation
///
/// ## Overloaded parameters
///
/// ## Parameters
/// * in: input cv::Mat for unary computation
/// * out: output cv::Scalar for unary computation
/// * args: compilation arguments for underlying compilation
/// process.
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn apply_3(&mut self, mut in_: core::Mat, out: &mut core::Scalar, mut args: crate::gapi::GCompileArgs) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_apply_Mat_ScalarR_GCompileArgsRR(self.as_raw_mut_GComputation(), in_.as_raw_mut_Mat(), out, args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute a binary computation (with compilation on the fly)
///
/// @private -- Exclude this function from OpenCV documentation
///
/// ## Overloaded parameters
///
/// ## Parameters
/// * in1: first input cv::Mat for binary computation
/// * in2: second input cv::Mat for binary computation
/// * out: output cv::Mat for binary computation
/// * args: compilation arguments for underlying compilation
/// process.
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn apply_4(&mut self, mut in1: core::Mat, mut in2: core::Mat, out: &mut core::Mat, mut args: crate::gapi::GCompileArgs) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_apply_Mat_Mat_MatR_GCompileArgsRR(self.as_raw_mut_GComputation(), in1.as_raw_mut_Mat(), in2.as_raw_mut_Mat(), out.as_raw_mut_Mat(), args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute an binary computation (with compilation on the fly)
///
/// @private -- Exclude this function from OpenCV documentation
///
/// ## Overloaded parameters
///
/// ## Parameters
/// * in1: first input cv::Mat for binary computation
/// * in2: second input cv::Mat for binary computation
/// * out: output cv::Scalar for binary computation
/// * args: compilation arguments for underlying compilation
/// process.
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn apply_5(&mut self, mut in1: core::Mat, mut in2: core::Mat, out: &mut core::Scalar, mut args: crate::gapi::GCompileArgs) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_apply_Mat_Mat_ScalarR_GCompileArgsRR(self.as_raw_mut_GComputation(), in1.as_raw_mut_Mat(), in2.as_raw_mut_Mat(), out, args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Execute a computation with arbitrary number of
/// inputs/outputs (with compilation on-the-fly).
///
/// @private -- Exclude this function from OpenCV documentation
///
/// ## Overloaded parameters
///
/// ## Parameters
/// * ins: vector of input cv::Mat objects to process by the
/// computation.
/// * outs: vector of output cv::Mat objects to produce by the
/// computation.
/// * args: compilation arguments for underlying compilation
/// process.
///
/// Numbers of elements in ins/outs vectors must match numbers of
/// inputs/outputs which were used to define this GComputation.
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn apply_6(&mut self, ins: &core::Vector<core::Mat>, outs: &mut core::Vector<core::Mat>, mut args: crate::gapi::GCompileArgs) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_apply_const_vectorLMatGR_vectorLMatGR_GCompileArgsRR(self.as_raw_mut_GComputation(), ins.as_raw_VectorOfMat(), outs.as_raw_mut_VectorOfMat(), args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Compile the computation for streaming mode.
///
/// This method triggers compilation process and produces a new
/// GStreamingCompiled object which then can process video stream
/// data in any format. Underlying mechanisms will be adjusted to
/// every new input video stream automatically, but please note that
/// _not all_ existing backends support this (see reshape()).
///
/// ## Parameters
/// * args: compilation arguments for this compilation
/// process. Compilation arguments directly affect what kind of
/// executable object would be produced, e.g. which kernels (and
/// thus, devices) would be used to execute computation.
///
/// ## Returns
/// GStreamingCompiled, a streaming-oriented executable
/// computation compiled for any input image format.
/// ## See also
/// [gapi_compile_args]
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn compile_streaming(&mut self, mut args: crate::gapi::GCompileArgs) -> Result<crate::gapi::GStreamingCompiled> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_compileStreaming_GCompileArgsRR(self.as_raw_mut_GComputation(), args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GStreamingCompiled::opencv_from_extern(ret) };
Ok(ret)
}
/// @private -- Exclude this function from OpenCV documentation
///
/// ## C++ default parameters
/// * args: {}
#[inline]
fn compile_streaming_1(&mut self, callback: &crate::gapi::ExtractMetaCallback, mut args: crate::gapi::GCompileArgs) -> Result<crate::gapi::GStreamingCompiled> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_compileStreaming_const_ExtractMetaCallbackR_GCompileArgsRR(self.as_raw_mut_GComputation(), callback.as_raw_ExtractMetaCallback(), args.as_raw_mut_VectorOfGCompileArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GStreamingCompiled::opencv_from_extern(ret) };
Ok(ret)
}
}
/// \addtogroup gapi_main_classes
///
/// G-API classes for constructed and compiled graphs.
/// /
///
/// GComputation class represents a captured computation
/// graph. GComputation objects form boundaries for expression code
/// user writes with G-API, allowing to compile and execute it.
///
/// G-API computations are defined with input/output data
/// objects. G-API will track automatically which operations connect
/// specified outputs to the inputs, forming up a call graph to be
/// executed. The below example expresses calculation of Sobel operator
/// for edge detection (![inline formula](https://latex.codecogs.com/png.latex?G%20%3D%20%5Csqrt%7BG%5Fx%5E2%20%2B%20G%5Fy%5E2%7D)):
///
/// [graph_def](https://github.com/opencv/opencv_contrib/blob/4.7.0/modules/hdf/samples/cpp/tutorial_code/gapi/doc_snippets/api_ref_snippets.cpp#L1)
///
/// Full pipeline can be now captured with this object declaration:
///
/// [graph_cap_full](https://github.com/opencv/opencv_contrib/blob/4.7.0/modules/hdf/samples/cpp/tutorial_code/gapi/doc_snippets/api_ref_snippets.cpp#L1)
///
/// Input/output data objects on which a call graph should be
/// reconstructed are passed using special wrappers cv::GIn and
/// cv::GOut. G-API will track automatically which operations form a
/// path from inputs to outputs and build the execution graph appropriately.
///
/// Note that cv::GComputation doesn't take ownership on data objects
/// it is defined. Moreover, multiple GComputation objects may be
/// defined on the same expressions, e.g. a smaller pipeline which
/// expects that image gradients are already pre-calculated may be
/// defined like this:
///
/// [graph_cap_sub](https://github.com/opencv/opencv_contrib/blob/4.7.0/modules/hdf/samples/cpp/tutorial_code/gapi/doc_snippets/api_ref_snippets.cpp#L1)
///
/// The resulting graph would expect two inputs and produce one
/// output. In this case, it doesn't matter if gx/gy data objects are
/// results of cv::gapi::Sobel operators -- G-API will stop unrolling
/// expressions and building the underlying graph one reaching this
/// data objects.
///
/// The way how GComputation is defined is important as its definition
/// specifies graph _protocol_ -- the way how the graph should be
/// used. Protocol is defined by number of inputs, number of outputs,
/// and shapes of inputs and outputs.
///
/// In the above example, sobelEdge expects one Mat on input and
/// produces one Mat; while sobelEdgeSub expects two Mats on input and
/// produces one Mat. GComputation's protocol defines how other
/// computation methods should be used -- cv::GComputation::compile() and
/// cv::GComputation::apply(). For example, if a graph is defined on
/// two GMat inputs, two cv::Mat objects have to be passed to apply()
/// for execution. GComputation checks protocol correctness in runtime
/// so passing a different number of objects in apply() or passing
/// cv::Scalar instead of cv::Mat there would compile well as a C++
/// source but raise an exception in run-time. G-API also comes with a
/// typed wrapper cv::GComputationT<> which introduces this type-checking in
/// compile-time.
///
/// cv::GComputation itself is a thin object which just captures what
/// the graph is. The compiled graph (which actually process data) is
/// represented by class GCompiled. Use compile() method to generate a
/// compiled graph with given compile options. cv::GComputation can
/// also be used to process data with implicit graph compilation
/// on-the-fly, see apply() for details.
///
/// GComputation is a reference-counted object -- once defined, all its
/// copies will refer to the same instance.
/// ## See also
/// GCompiled
pub struct GComputation {
ptr: *mut c_void
}
opencv_type_boxed! { GComputation }
impl Drop for GComputation {
fn drop(&mut self) {
extern "C" { fn cv_GComputation_delete(instance: *mut c_void); }
unsafe { cv_GComputation_delete(self.as_raw_mut_GComputation()) };
}
}
unsafe impl Send for GComputation {}
impl crate::gapi::GComputationTraitConst for GComputation {
#[inline] fn as_raw_GComputation(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GComputationTrait for GComputation {
#[inline] fn as_raw_mut_GComputation(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GComputation {
/// Defines an unary (one input -- one output) computation
///
/// Generic GComputation constructor.
///
/// Constructs a new graph with a given protocol, specified as a
/// flow of operations connecting input/output objects. Throws if
/// the passed boundaries are invalid, e.g. if there's no
/// functional dependency (path) between given outputs and inputs.
///
/// ## Parameters
/// * ins: Input data vector.
/// * outs: Output data vector.
///
///
/// Note: Don't construct GProtoInputArgs/GProtoOutputArgs objects
/// directly, use cv::GIn()/cv::GOut() wrapper functions instead.
/// ## See also
/// [gapi_data_objects]
///
/// ## Overloaded parameters
///
/// * in: input GMat of the defined unary computation
/// * out: output GMat of the defined unary computation
#[inline]
pub fn new(mut in_: crate::gapi::GMat, mut out: crate::gapi::GMat) -> Result<crate::gapi::GComputation> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_GComputation_GMat_GMat(in_.as_raw_mut_GMat(), out.as_raw_mut_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GComputation::opencv_from_extern(ret) };
Ok(ret)
}
/// Defines an unary (one input -- one output) computation
///
/// Generic GComputation constructor.
///
/// Constructs a new graph with a given protocol, specified as a
/// flow of operations connecting input/output objects. Throws if
/// the passed boundaries are invalid, e.g. if there's no
/// functional dependency (path) between given outputs and inputs.
///
/// ## Parameters
/// * ins: Input data vector.
/// * outs: Output data vector.
///
///
/// Note: Don't construct GProtoInputArgs/GProtoOutputArgs objects
/// directly, use cv::GIn()/cv::GOut() wrapper functions instead.
/// ## See also
/// [gapi_data_objects]
///
/// ## Overloaded parameters
///
/// * in: input GMat of the defined unary computation
/// * out: output GScalar of the defined unary computation
#[inline]
pub fn new_1(mut in_: crate::gapi::GMat, mut out: crate::gapi::GScalar) -> Result<crate::gapi::GComputation> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_GComputation_GMat_GScalar(in_.as_raw_mut_GMat(), out.as_raw_mut_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GComputation::opencv_from_extern(ret) };
Ok(ret)
}
/// Defines a binary (two inputs -- one output) computation
///
/// Generic GComputation constructor.
///
/// Constructs a new graph with a given protocol, specified as a
/// flow of operations connecting input/output objects. Throws if
/// the passed boundaries are invalid, e.g. if there's no
/// functional dependency (path) between given outputs and inputs.
///
/// ## Parameters
/// * ins: Input data vector.
/// * outs: Output data vector.
///
///
/// Note: Don't construct GProtoInputArgs/GProtoOutputArgs objects
/// directly, use cv::GIn()/cv::GOut() wrapper functions instead.
/// ## See also
/// [gapi_data_objects]
///
/// ## Overloaded parameters
///
/// * in1: first input GMat of the defined binary computation
/// * in2: second input GMat of the defined binary computation
/// * out: output GMat of the defined binary computation
#[inline]
pub fn new_2(mut in1: crate::gapi::GMat, mut in2: crate::gapi::GMat, mut out: crate::gapi::GMat) -> Result<crate::gapi::GComputation> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_GComputation_GMat_GMat_GMat(in1.as_raw_mut_GMat(), in2.as_raw_mut_GMat(), out.as_raw_mut_GMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GComputation::opencv_from_extern(ret) };
Ok(ret)
}
/// Defines a binary (two inputs -- one output) computation
///
/// Generic GComputation constructor.
///
/// Constructs a new graph with a given protocol, specified as a
/// flow of operations connecting input/output objects. Throws if
/// the passed boundaries are invalid, e.g. if there's no
/// functional dependency (path) between given outputs and inputs.
///
/// ## Parameters
/// * ins: Input data vector.
/// * outs: Output data vector.
///
///
/// Note: Don't construct GProtoInputArgs/GProtoOutputArgs objects
/// directly, use cv::GIn()/cv::GOut() wrapper functions instead.
/// ## See also
/// [gapi_data_objects]
///
/// ## Overloaded parameters
///
/// * in1: first input GMat of the defined binary computation
/// * in2: second input GMat of the defined binary computation
/// * out: output GScalar of the defined binary computation
#[inline]
pub fn new_3(mut in1: crate::gapi::GMat, mut in2: crate::gapi::GMat, mut out: crate::gapi::GScalar) -> Result<crate::gapi::GComputation> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_GComputation_GMat_GMat_GScalar(in1.as_raw_mut_GMat(), in2.as_raw_mut_GMat(), out.as_raw_mut_GScalar(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GComputation::opencv_from_extern(ret) };
Ok(ret)
}
/// Defines a computation with arbitrary input/output number.
///
/// Generic GComputation constructor.
///
/// Constructs a new graph with a given protocol, specified as a
/// flow of operations connecting input/output objects. Throws if
/// the passed boundaries are invalid, e.g. if there's no
/// functional dependency (path) between given outputs and inputs.
///
/// ## Parameters
/// * ins: Input data vector.
/// * outs: Output data vector.
///
///
/// Note: Don't construct GProtoInputArgs/GProtoOutputArgs objects
/// directly, use cv::GIn()/cv::GOut() wrapper functions instead.
/// ## See also
/// [gapi_data_objects]
///
/// ## Overloaded parameters
///
/// * ins: vector of inputs GMats for this computation
/// * outs: vector of outputs GMats for this computation
///
/// Use this overload for cases when number of computation
/// inputs/outputs is not known in compile-time -- e.g. when graph
/// is programmatically generated to build an image pyramid with
/// the given number of levels, etc.
#[inline]
pub fn new_4(ins: &core::Vector<crate::gapi::GMat>, outs: &core::Vector<crate::gapi::GMat>) -> Result<crate::gapi::GComputation> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GComputation_GComputation_const_vectorLGMatGR_const_vectorLGMatGR(ins.as_raw_VectorOfGMat(), outs.as_raw_VectorOfGMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GComputation::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GFrame]
pub trait GFrameTraitConst {
fn as_raw_GFrame(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GFrame]
pub trait GFrameTrait: crate::gapi::GFrameTraitConst {
fn as_raw_mut_GFrame(&mut self) -> *mut c_void;
}
/// \addtogroup gapi_data_objects
/// /
///
/// GFrame class represents an image or media frame in the graph.
///
/// GFrame doesn't store any data itself, instead it describes a
/// functional relationship between operations consuming and producing
/// GFrame objects.
///
/// GFrame is introduced to handle various media formats (e.g., NV12 or
/// I420) under the same type. Various image formats may differ in the
/// number of planes (e.g. two for NV12, three for I420) and the pixel
/// layout inside. GFrame type allows to handle these media formats in
/// the graph uniformly -- the graph structure will not change if the
/// media format changes, e.g. a different camera or decoder is used
/// with the same graph. G-API provides a number of operations which
/// operate directly on GFrame, like `infer<>()` or
/// renderFrame(); these operations are expected to handle different
/// media formats inside. There is also a number of accessor
/// operations like BGR(), Y(), UV() -- these operations provide
/// access to frame's data in the familiar cv::GMat form, which can be
/// used with the majority of the existing G-API operations. These
/// accessor functions may perform color space conversion on the fly if
/// the image format of the GFrame they are applied to differs from the
/// operation's semantic (e.g. the BGR() accessor is called on an NV12
/// image frame).
///
/// GFrame is a virtual counterpart of cv::MediaFrame.
/// ## See also
/// cv::MediaFrame, cv::GFrameDesc, BGR(), Y(), UV(), infer<>().
pub struct GFrame {
ptr: *mut c_void
}
opencv_type_boxed! { GFrame }
impl Drop for GFrame {
fn drop(&mut self) {
extern "C" { fn cv_GFrame_delete(instance: *mut c_void); }
unsafe { cv_GFrame_delete(self.as_raw_mut_GFrame()) };
}
}
unsafe impl Send for GFrame {}
impl crate::gapi::GFrameTraitConst for GFrame {
#[inline] fn as_raw_GFrame(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GFrameTrait for GFrame {
#[inline] fn as_raw_mut_GFrame(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GFrame {
/// Constructs an empty GFrame
///
/// Normally, empty G-API data objects denote a starting point of
/// the graph. When an empty GFrame is assigned to a result of some
/// operation, it obtains a functional link to this operation (and
/// is not empty anymore).
#[inline]
pub fn default() -> Result<crate::gapi::GFrame> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GFrame_GFrame(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GFrame::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GFrameDesc]
pub trait GFrameDescTraitConst {
fn as_raw_GFrameDesc(&self) -> *const c_void;
#[inline]
fn fmt(&self) -> crate::gapi::MediaFormat {
return_send!(via ocvrs_return);
unsafe { sys::cv_GFrameDesc_getPropFmt_const(self.as_raw_GFrameDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
#[inline]
fn size(&self) -> core::Size {
return_send!(via ocvrs_return);
unsafe { sys::cv_GFrameDesc_getPropSize_const(self.as_raw_GFrameDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
#[inline]
fn equals(&self, unnamed: &crate::gapi::GFrameDesc) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GFrameDesc_operatorEQ_const_const_GFrameDescR(self.as_raw_GFrameDesc(), unnamed.as_raw_GFrameDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GFrameDesc]
pub trait GFrameDescTrait: crate::gapi::GFrameDescTraitConst {
fn as_raw_mut_GFrameDesc(&mut self) -> *mut c_void;
#[inline]
fn set_fmt(&mut self, val: crate::gapi::MediaFormat) {
let ret = unsafe { sys::cv_GFrameDesc_setPropFmt_MediaFormat(self.as_raw_mut_GFrameDesc(), val) };
ret
}
#[inline]
fn set_size(&mut self, val: core::Size) {
let ret = unsafe { sys::cv_GFrameDesc_setPropSize_Size(self.as_raw_mut_GFrameDesc(), val.opencv_as_extern()) };
ret
}
}
/// \addtogroup gapi_meta_args
pub struct GFrameDesc {
ptr: *mut c_void
}
opencv_type_boxed! { GFrameDesc }
impl Drop for GFrameDesc {
fn drop(&mut self) {
extern "C" { fn cv_GFrameDesc_delete(instance: *mut c_void); }
unsafe { cv_GFrameDesc_delete(self.as_raw_mut_GFrameDesc()) };
}
}
unsafe impl Send for GFrameDesc {}
impl crate::gapi::GFrameDescTraitConst for GFrameDesc {
#[inline] fn as_raw_GFrameDesc(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GFrameDescTrait for GFrameDesc {
#[inline] fn as_raw_mut_GFrameDesc(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GFrameDesc {
}
/// Constant methods for [crate::gapi::GKernel]
pub trait GKernelTraitConst {
fn as_raw_GKernel(&self) -> *const c_void;
#[inline]
fn name(&self) -> String {
let ret = unsafe { sys::cv_GKernel_getPropName_const(self.as_raw_GKernel()) };
let ret = unsafe { String::opencv_from_extern(ret) };
ret
}
#[inline]
fn tag(&self) -> String {
let ret = unsafe { sys::cv_GKernel_getPropTag_const(self.as_raw_GKernel()) };
let ret = unsafe { String::opencv_from_extern(ret) };
ret
}
#[inline]
fn out_shapes(&self) -> core::Vector<crate::gapi::GShape> {
let ret = unsafe { sys::cv_GKernel_getPropOutShapes_const(self.as_raw_GKernel()) };
let ret = unsafe { core::Vector::<crate::gapi::GShape>::opencv_from_extern(ret) };
ret
}
#[inline]
fn in_kinds(&self) -> core::Vector<crate::gapi::OpaqueKind> {
let ret = unsafe { sys::cv_GKernel_getPropInKinds_const(self.as_raw_GKernel()) };
let ret = unsafe { core::Vector::<crate::gapi::OpaqueKind>::opencv_from_extern(ret) };
ret
}
}
/// Mutable methods for [crate::gapi::GKernel]
pub trait GKernelTrait: crate::gapi::GKernelTraitConst {
fn as_raw_mut_GKernel(&mut self) -> *mut c_void;
#[inline]
fn set_name(&mut self, val: &str) {
extern_container_arg!(nofail mut val);
let ret = unsafe { sys::cv_GKernel_setPropName_string(self.as_raw_mut_GKernel(), val.opencv_as_extern_mut()) };
ret
}
#[inline]
fn set_tag(&mut self, val: &str) {
extern_container_arg!(nofail mut val);
let ret = unsafe { sys::cv_GKernel_setPropTag_string(self.as_raw_mut_GKernel(), val.opencv_as_extern_mut()) };
ret
}
#[inline]
fn set_out_shapes(&mut self, mut val: crate::gapi::GShapes) {
let ret = unsafe { sys::cv_GKernel_setPropOutShapes_GShapes(self.as_raw_mut_GKernel(), val.as_raw_mut_VectorOfGShape()) };
ret
}
#[inline]
fn set_in_kinds(&mut self, mut val: crate::gapi::GKinds) {
let ret = unsafe { sys::cv_GKernel_setPropInKinds_GKinds(self.as_raw_mut_GKernel(), val.as_raw_mut_VectorOfOpaqueKind()) };
ret
}
}
pub struct GKernel {
ptr: *mut c_void
}
opencv_type_boxed! { GKernel }
impl Drop for GKernel {
fn drop(&mut self) {
extern "C" { fn cv_GKernel_delete(instance: *mut c_void); }
unsafe { cv_GKernel_delete(self.as_raw_mut_GKernel()) };
}
}
unsafe impl Send for GKernel {}
impl crate::gapi::GKernelTraitConst for GKernel {
#[inline] fn as_raw_GKernel(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GKernelTrait for GKernel {
#[inline] fn as_raw_mut_GKernel(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GKernel {
}
/// Constant methods for [crate::gapi::GKernelImpl]
pub trait GKernelImplTraitConst {
fn as_raw_GKernelImpl(&self) -> *const c_void;
#[inline]
fn opaque(&self) -> crate::gapi::any {
let ret = unsafe { sys::cv_GKernelImpl_getPropOpaque_const(self.as_raw_GKernelImpl()) };
let ret = unsafe { crate::gapi::any::opencv_from_extern(ret) };
ret
}
}
/// Mutable methods for [crate::gapi::GKernelImpl]
pub trait GKernelImplTrait: crate::gapi::GKernelImplTraitConst {
fn as_raw_mut_GKernelImpl(&mut self) -> *mut c_void;
#[inline]
fn set_opaque(&mut self, mut val: crate::gapi::any) {
let ret = unsafe { sys::cv_GKernelImpl_setPropOpaque_any(self.as_raw_mut_GKernelImpl(), val.as_raw_mut_any()) };
ret
}
}
pub struct GKernelImpl {
ptr: *mut c_void
}
opencv_type_boxed! { GKernelImpl }
impl Drop for GKernelImpl {
fn drop(&mut self) {
extern "C" { fn cv_GKernelImpl_delete(instance: *mut c_void); }
unsafe { cv_GKernelImpl_delete(self.as_raw_mut_GKernelImpl()) };
}
}
unsafe impl Send for GKernelImpl {}
impl crate::gapi::GKernelImplTraitConst for GKernelImpl {
#[inline] fn as_raw_GKernelImpl(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GKernelImplTrait for GKernelImpl {
#[inline] fn as_raw_mut_GKernelImpl(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GKernelImpl {
}
/// Constant methods for [crate::gapi::GKernelPackage]
pub trait GKernelPackageTraitConst {
fn as_raw_GKernelPackage(&self) -> *const c_void;
/// Returns vector of transformations included in the package
///
/// ## Returns
/// vector of transformations included in the package
#[inline]
fn get_transformations(&self) -> Result<core::Vector<crate::gapi::GTransform>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GKernelPackage_get_transformations_const(self.as_raw_GKernelPackage(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Vector::<crate::gapi::GTransform>::opencv_from_extern(ret) };
Ok(ret)
}
/// Returns vector of kernel ids included in the package
///
/// ## Returns
/// vector of kernel ids included in the package
#[inline]
fn get_kernel_ids(&self) -> Result<core::Vector<String>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GKernelPackage_get_kernel_ids_const(self.as_raw_GKernelPackage(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Vector::<String>::opencv_from_extern(ret) };
Ok(ret)
}
/// @private
#[inline]
fn includes_api(&self, id: &str) -> Result<bool> {
extern_container_arg!(id);
return_send!(via ocvrs_return);
unsafe { sys::cv_GKernelPackage_includesAPI_const_const_stringR(self.as_raw_GKernelPackage(), id.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// @private
#[inline]
fn lookup(&self, id: &str) -> Result<core::Tuple<(crate::gapi::GBackend, crate::gapi::GKernelImpl)>> {
extern_container_arg!(id);
return_send!(via ocvrs_return);
unsafe { sys::cv_GKernelPackage_lookup_const_const_stringR(self.as_raw_GKernelPackage(), id.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Tuple::<(crate::gapi::GBackend, crate::gapi::GKernelImpl)>::opencv_from_extern(ret) };
Ok(ret)
}
/// Lists all backends which are included into package
///
/// ## Returns
/// vector of backends
#[inline]
fn backends(&self) -> Result<core::Vector<crate::gapi::GBackend>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GKernelPackage_backends_const(self.as_raw_GKernelPackage(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Vector::<crate::gapi::GBackend>::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GKernelPackage]
pub trait GKernelPackageTrait: crate::gapi::GKernelPackageTraitConst {
fn as_raw_mut_GKernelPackage(&mut self) -> *mut c_void;
#[inline]
fn include(&mut self, functor: &dyn crate::gapi::GFunctor) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GKernelPackage_include_const_GFunctorR(self.as_raw_mut_GKernelPackage(), functor.as_raw_GFunctor(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Remove all kernels associated with the given backend
/// from the package.
///
/// Does nothing if there's no kernels of this backend in the package.
///
/// ## Parameters
/// * backend: backend which kernels to remove
#[inline]
fn remove(&mut self, backend: &crate::gapi::GBackend) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GKernelPackage_remove_const_GBackendR(self.as_raw_mut_GKernelPackage(), backend.as_raw_GBackend(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Adds a new kernel based on it's backend and id into the kernel package
///
/// ## Parameters
/// * backend: backend associated with the kernel
/// * kernel_id: a name/id of the kernel
#[inline]
fn include_1(&mut self, backend: &crate::gapi::GBackend, kernel_id: &str) -> Result<()> {
extern_container_arg!(kernel_id);
return_send!(via ocvrs_return);
unsafe { sys::cv_GKernelPackage_include_const_GBackendR_const_stringR(self.as_raw_mut_GKernelPackage(), backend.as_raw_GBackend(), kernel_id.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// A container class for heterogeneous kernel
/// implementation collections and graph transformations.
///
/// GKernelPackage is a special container class which stores kernel
/// _implementations_ and graph _transformations_. Objects of this class
/// are created and passed to cv::GComputation::compile() to specify
/// which kernels to use and which transformations to apply in the
/// compiled graph. GKernelPackage may contain kernels of
/// different backends, e.g. be heterogeneous.
///
/// The most easy way to create a kernel package is to use function
/// cv::gapi::kernels(). This template functions takes kernel
/// implementations in form of type list (variadic template) and
/// generates a kernel package atop of that.
///
/// Kernel packages can be also generated programmatically, starting
/// with an empty package (created with the default constructor)
/// and then by populating it with kernels via call to
/// GKernelPackage::include(). Note this method is also a template
/// one since G-API kernel and transformation implementations are _types_,
/// not objects.
///
/// Finally, two kernel packages can be combined into a new one
/// with function cv::gapi::combine().
pub struct GKernelPackage {
ptr: *mut c_void
}
opencv_type_boxed! { GKernelPackage }
impl Drop for GKernelPackage {
fn drop(&mut self) {
extern "C" { fn cv_GKernelPackage_delete(instance: *mut c_void); }
unsafe { cv_GKernelPackage_delete(self.as_raw_mut_GKernelPackage()) };
}
}
unsafe impl Send for GKernelPackage {}
impl crate::gapi::GKernelPackageTraitConst for GKernelPackage {
#[inline] fn as_raw_GKernelPackage(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GKernelPackageTrait for GKernelPackage {
#[inline] fn as_raw_mut_GKernelPackage(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GKernelPackage {
}
/// Constant methods for [crate::gapi::GMat]
pub trait GMatTraitConst {
fn as_raw_GMat(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GMat]
pub trait GMatTrait: crate::gapi::GMatTraitConst {
fn as_raw_mut_GMat(&mut self) -> *mut c_void;
}
/// \addtogroup gapi_data_objects
///
/// G-API data objects used to build G-API expressions.
///
/// These objects do not own any particular data (except compile-time
/// associated values like with cv::GScalar or `cv::GArray<T>`) and are
/// used only to construct graphs.
///
/// Every graph in G-API starts and ends with data objects.
///
/// Once constructed and compiled, G-API operates with regular host-side
/// data instead. Refer to the below table to find the mapping between
/// G-API and regular data types when passing input and output data
/// structures to G-API:
///
/// G-API data type | I/O data type
/// ------------------ | -------------
/// cv::GMat | cv::Mat, cv::UMat, cv::RMat
/// cv::GScalar | cv::Scalar
/// `cv::GArray<T>` | std::vector<T>
/// `cv::GOpaque<T>` | T
/// cv::GFrame | cv::MediaFrame
/// /
///
/// GMat class represents image or tensor data in the
/// graph.
///
/// GMat doesn't store any data itself, instead it describes a
/// functional relationship between operations consuming and producing
/// GMat objects.
///
/// GMat is a virtual counterpart of Mat and UMat, but it
/// doesn't mean G-API use Mat or UMat objects internally to represent
/// GMat objects -- the internal data representation may be
/// backend-specific or optimized out at all.
/// ## See also
/// Mat, GMatDesc
pub struct GMat {
ptr: *mut c_void
}
opencv_type_boxed! { GMat }
impl Drop for GMat {
fn drop(&mut self) {
extern "C" { fn cv_GMat_delete(instance: *mut c_void); }
unsafe { cv_GMat_delete(self.as_raw_mut_GMat()) };
}
}
unsafe impl Send for GMat {}
impl crate::gapi::GMatTraitConst for GMat {
#[inline] fn as_raw_GMat(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GMatTrait for GMat {
#[inline] fn as_raw_mut_GMat(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GMat {
/// Constructs an empty GMat
///
/// Normally, empty G-API data objects denote a starting point of
/// the graph. When an empty GMat is assigned to a result of some
/// operation, it obtains a functional link to this operation (and
/// is not empty anymore).
#[inline]
pub fn default() -> Result<crate::gapi::GMat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMat_GMat(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMat::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GMatDesc]
pub trait GMatDescTraitConst {
fn as_raw_GMatDesc(&self) -> *const c_void;
#[inline]
fn depth(&self) -> i32 {
let ret = unsafe { sys::cv_GMatDesc_getPropDepth_const(self.as_raw_GMatDesc()) };
ret
}
#[inline]
fn chan(&self) -> i32 {
let ret = unsafe { sys::cv_GMatDesc_getPropChan_const(self.as_raw_GMatDesc()) };
ret
}
#[inline]
fn size(&self) -> core::Size {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_getPropSize_const(self.as_raw_GMatDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
#[inline]
fn planar(&self) -> bool {
let ret = unsafe { sys::cv_GMatDesc_getPropPlanar_const(self.as_raw_GMatDesc()) };
ret
}
#[inline]
fn dims(&self) -> core::Vector<i32> {
let ret = unsafe { sys::cv_GMatDesc_getPropDims_const(self.as_raw_GMatDesc()) };
let ret = unsafe { core::Vector::<i32>::opencv_from_extern(ret) };
ret
}
#[inline]
fn equals(&self, rhs: &crate::gapi::GMatDesc) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_operatorEQ_const_const_GMatDescR(self.as_raw_GMatDesc(), rhs.as_raw_GMatDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn not_equals(&self, rhs: &crate::gapi::GMatDesc) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_operatorNE_const_const_GMatDescR(self.as_raw_GMatDesc(), rhs.as_raw_GMatDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn is_nd(&self) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_isND_const(self.as_raw_GMatDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn can_describe(&self, mat: &core::Mat) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_canDescribe_const_const_MatR(self.as_raw_GMatDesc(), mat.as_raw_Mat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn can_describe_1(&self, mat: &crate::gapi::RMat) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_canDescribe_const_const_RMatR(self.as_raw_GMatDesc(), mat.as_raw_RMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn with_size_delta(&self, delta: core::Size) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_withSizeDelta_const_Size(self.as_raw_GMatDesc(), delta.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn with_size_delta_1(&self, dx: i32, dy: i32) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_withSizeDelta_const_int_int(self.as_raw_GMatDesc(), dx, dy, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn with_size(&self, sz: core::Size) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_withSize_const_Size(self.as_raw_GMatDesc(), sz.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn with_depth(&self, ddepth: i32) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_withDepth_const_int(self.as_raw_GMatDesc(), ddepth, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn with_type(&self, ddepth: i32, dchan: i32) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_withType_const_int_int(self.as_raw_GMatDesc(), ddepth, dchan, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn as_planar(&self) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_asPlanar_const(self.as_raw_GMatDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn as_planar_1(&self, planes: i32) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_asPlanar_const_int(self.as_raw_GMatDesc(), planes, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn as_interleaved(&self) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_asInterleaved_const(self.as_raw_GMatDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GMatDesc]
pub trait GMatDescTrait: crate::gapi::GMatDescTraitConst {
fn as_raw_mut_GMatDesc(&mut self) -> *mut c_void;
#[inline]
fn set_depth(&mut self, val: i32) {
let ret = unsafe { sys::cv_GMatDesc_setPropDepth_int(self.as_raw_mut_GMatDesc(), val) };
ret
}
#[inline]
fn set_chan(&mut self, val: i32) {
let ret = unsafe { sys::cv_GMatDesc_setPropChan_int(self.as_raw_mut_GMatDesc(), val) };
ret
}
#[inline]
fn set_size(&mut self, val: core::Size) {
let ret = unsafe { sys::cv_GMatDesc_setPropSize_Size(self.as_raw_mut_GMatDesc(), val.opencv_as_extern()) };
ret
}
#[inline]
fn set_planar(&mut self, val: bool) {
let ret = unsafe { sys::cv_GMatDesc_setPropPlanar_bool(self.as_raw_mut_GMatDesc(), val) };
ret
}
#[inline]
fn set_dims(&mut self, mut val: core::Vector<i32>) {
let ret = unsafe { sys::cv_GMatDesc_setPropDims_vectorLintG(self.as_raw_mut_GMatDesc(), val.as_raw_mut_VectorOfi32()) };
ret
}
}
/// \addtogroup gapi_meta_args
pub struct GMatDesc {
ptr: *mut c_void
}
opencv_type_boxed! { GMatDesc }
impl Drop for GMatDesc {
fn drop(&mut self) {
extern "C" { fn cv_GMatDesc_delete(instance: *mut c_void); }
unsafe { cv_GMatDesc_delete(self.as_raw_mut_GMatDesc()) };
}
}
unsafe impl Send for GMatDesc {}
impl crate::gapi::GMatDescTraitConst for GMatDesc {
#[inline] fn as_raw_GMatDesc(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GMatDescTrait for GMatDesc {
#[inline] fn as_raw_mut_GMatDesc(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GMatDesc {
/// ## C++ default parameters
/// * p: false
#[inline]
pub fn new(d: i32, c: i32, s: core::Size, p: bool) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_GMatDesc_int_int_Size_bool(d, c, s.opencv_as_extern(), p, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn new_1(d: i32, dd: &core::Vector<i32>) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_GMatDesc_int_const_vectorLintGR(d, dd.as_raw_VectorOfi32(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn new_2(d: i32, mut dd: core::Vector<i32>) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_GMatDesc_int_vectorLintGRR(d, dd.as_raw_mut_VectorOfi32(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn default() -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GMatDesc_GMatDesc(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GMatP]
pub trait GMatPTraitConst: crate::gapi::GMatTraitConst {
fn as_raw_GMatP(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GMatP]
pub trait GMatPTrait: crate::gapi::GMatPTraitConst + crate::gapi::GMatTrait {
fn as_raw_mut_GMatP(&mut self) -> *mut c_void;
}
pub struct GMatP {
ptr: *mut c_void
}
opencv_type_boxed! { GMatP }
impl Drop for GMatP {
fn drop(&mut self) {
extern "C" { fn cv_GMatP_delete(instance: *mut c_void); }
unsafe { cv_GMatP_delete(self.as_raw_mut_GMatP()) };
}
}
unsafe impl Send for GMatP {}
impl crate::gapi::GMatTraitConst for GMatP {
#[inline] fn as_raw_GMat(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GMatTrait for GMatP {
#[inline] fn as_raw_mut_GMat(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::gapi::GMatPTraitConst for GMatP {
#[inline] fn as_raw_GMatP(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GMatPTrait for GMatP {
#[inline] fn as_raw_mut_GMatP(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GMatP {
}
boxed_cast_base! { GMatP, crate::gapi::GMat, cv_GMatP_to_GMat }
/// Constant methods for [crate::gapi::GOpaqueDesc]
pub trait GOpaqueDescTraitConst {
fn as_raw_GOpaqueDesc(&self) -> *const c_void;
#[inline]
fn equals(&self, unnamed: &crate::gapi::GOpaqueDesc) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GOpaqueDesc_operatorEQ_const_const_GOpaqueDescR(self.as_raw_GOpaqueDesc(), unnamed.as_raw_GOpaqueDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GOpaqueDesc]
pub trait GOpaqueDescTrait: crate::gapi::GOpaqueDescTraitConst {
fn as_raw_mut_GOpaqueDesc(&mut self) -> *mut c_void;
}
/// \addtogroup gapi_meta_args
pub struct GOpaqueDesc {
ptr: *mut c_void
}
opencv_type_boxed! { GOpaqueDesc }
impl Drop for GOpaqueDesc {
fn drop(&mut self) {
extern "C" { fn cv_GOpaqueDesc_delete(instance: *mut c_void); }
unsafe { cv_GOpaqueDesc_delete(self.as_raw_mut_GOpaqueDesc()) };
}
}
unsafe impl Send for GOpaqueDesc {}
impl crate::gapi::GOpaqueDescTraitConst for GOpaqueDesc {
#[inline] fn as_raw_GOpaqueDesc(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GOpaqueDescTrait for GOpaqueDesc {
#[inline] fn as_raw_mut_GOpaqueDesc(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GOpaqueDesc {
}
/// Constant methods for [crate::gapi::GRunArg]
pub trait GRunArgTraitConst {
fn as_raw_GRunArg(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GRunArg]
pub trait GRunArgTrait: crate::gapi::GRunArgTraitConst {
fn as_raw_mut_GRunArg(&mut self) -> *mut c_void;
}
pub struct GRunArg {
ptr: *mut c_void
}
opencv_type_boxed! { GRunArg }
impl Drop for GRunArg {
fn drop(&mut self) {
extern "C" { fn cv_GRunArg_delete(instance: *mut c_void); }
unsafe { cv_GRunArg_delete(self.as_raw_mut_GRunArg()) };
}
}
unsafe impl Send for GRunArg {}
impl crate::gapi::GRunArgTraitConst for GRunArg {
#[inline] fn as_raw_GRunArg(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GRunArgTrait for GRunArg {
#[inline] fn as_raw_mut_GRunArg(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GRunArg {
#[inline]
pub fn default() -> Result<crate::gapi::GRunArg> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GRunArg_GRunArg(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GRunArg::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn copy(arg: &crate::gapi::GRunArg) -> Result<crate::gapi::GRunArg> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GRunArg_GRunArg_const_GRunArgR(arg.as_raw_GRunArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GRunArg::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn copy_mut(mut arg: crate::gapi::GRunArg) -> Result<crate::gapi::GRunArg> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GRunArg_GRunArg_GRunArgRR(arg.as_raw_mut_GRunArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GRunArg::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GScalar]
pub trait GScalarTraitConst {
fn as_raw_GScalar(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GScalar]
pub trait GScalarTrait: crate::gapi::GScalarTraitConst {
fn as_raw_mut_GScalar(&mut self) -> *mut c_void;
}
/// \addtogroup gapi_data_objects
/// /
///
/// GScalar class represents cv::Scalar data in the graph.
///
/// GScalar may be associated with a cv::Scalar value, which becomes
/// its constant value bound in graph compile time. cv::GScalar describes a
/// functional relationship between operations consuming and producing
/// GScalar objects.
///
/// GScalar is a virtual counterpart of cv::Scalar, which is usually used
/// to represent the GScalar data in G-API during the execution.
/// ## See also
/// Scalar
pub struct GScalar {
ptr: *mut c_void
}
opencv_type_boxed! { GScalar }
impl Drop for GScalar {
fn drop(&mut self) {
extern "C" { fn cv_GScalar_delete(instance: *mut c_void); }
unsafe { cv_GScalar_delete(self.as_raw_mut_GScalar()) };
}
}
unsafe impl Send for GScalar {}
impl crate::gapi::GScalarTraitConst for GScalar {
#[inline] fn as_raw_GScalar(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GScalarTrait for GScalar {
#[inline] fn as_raw_mut_GScalar(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GScalar {
/// Constructs an empty GScalar
///
/// Normally, empty G-API data objects denote a starting point of
/// the graph. When an empty GScalar is assigned to a result of some
/// operation, it obtains a functional link to this operation (and
/// is not empty anymore).
#[inline]
pub fn default() -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GScalar_GScalar(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// Constructs a value-initialized GScalar
///
/// In contrast with GMat (which can be either an explicit graph input
/// or a result of some operation), GScalars may have their values
/// be associated at graph construction time. It is useful when
/// some operation has a GScalar input which doesn't change during
/// the program execution, and is set only once. In this case,
/// there is no need to declare such GScalar as a graph input.
///
///
/// Note: The value of GScalar may be overwritten by assigning some
/// other GScalar to the object using `operator=` -- on the
/// assignment, the old GScalar value is discarded.
///
/// ## Parameters
/// * s: a cv::Scalar value to associate with this GScalar object.
#[inline]
pub fn new(s: core::Scalar) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GScalar_GScalar_const_ScalarR(&s, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// Constructs a value-initialized GScalar
///
/// In contrast with GMat (which can be either an explicit graph input
/// or a result of some operation), GScalars may have their values
/// be associated at graph construction time. It is useful when
/// some operation has a GScalar input which doesn't change during
/// the program execution, and is set only once. In this case,
/// there is no need to declare such GScalar as a graph input.
///
///
/// Note: The value of GScalar may be overwritten by assigning some
/// other GScalar to the object using `operator=` -- on the
/// assignment, the old GScalar value is discarded.
///
/// ## Parameters
/// * s: a cv::Scalar value to associate with this GScalar object.
///
/// ## Overloaded parameters
///
/// Constructs a value-initialized GScalar
///
/// * s: a cv::Scalar value to associate with this GScalar object.
#[inline]
pub fn new_1(mut s: core::Scalar) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GScalar_GScalar_ScalarRR(&mut s, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
/// Constructs a value-initialized GScalar
///
/// In contrast with GMat (which can be either an explicit graph input
/// or a result of some operation), GScalars may have their values
/// be associated at graph construction time. It is useful when
/// some operation has a GScalar input which doesn't change during
/// the program execution, and is set only once. In this case,
/// there is no need to declare such GScalar as a graph input.
///
///
/// Note: The value of GScalar may be overwritten by assigning some
/// other GScalar to the object using `operator=` -- on the
/// assignment, the old GScalar value is discarded.
///
/// ## Parameters
/// * s: a cv::Scalar value to associate with this GScalar object.
///
/// ## Overloaded parameters
///
/// Constructs a value-initialized GScalar
///
/// * v0: A `double` value to associate with this GScalar. Note
/// that only the first component of a four-component cv::Scalar is
/// set to this value, with others remain zeros.
///
/// This constructor overload is not marked `explicit` and can be
/// used in G-API expression code like this:
///
/// [gscalar_implicit](https://github.com/opencv/opencv_contrib/blob/4.7.0/modules/hdf/samples/cpp/tutorial_code/gapi/doc_snippets/api_ref_snippets.cpp#L1)
///
/// Here operator+(GMat,GScalar) is used to wrap cv::gapi::addC()
/// and a value-initialized GScalar is created on the fly.
///
/// @overload
#[inline]
pub fn new_2(v0: f64) -> Result<crate::gapi::GScalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GScalar_GScalar_double(v0, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GScalar::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GScalarDesc]
pub trait GScalarDescTraitConst {
fn as_raw_GScalarDesc(&self) -> *const c_void;
#[inline]
fn equals(&self, unnamed: &crate::gapi::GScalarDesc) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GScalarDesc_operatorEQ_const_const_GScalarDescR(self.as_raw_GScalarDesc(), unnamed.as_raw_GScalarDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn not_equals(&self, rhs: &crate::gapi::GScalarDesc) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GScalarDesc_operatorNE_const_const_GScalarDescR(self.as_raw_GScalarDesc(), rhs.as_raw_GScalarDesc(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GScalarDesc]
pub trait GScalarDescTrait: crate::gapi::GScalarDescTraitConst {
fn as_raw_mut_GScalarDesc(&mut self) -> *mut c_void;
}
/// \addtogroup gapi_meta_args
pub struct GScalarDesc {
ptr: *mut c_void
}
opencv_type_boxed! { GScalarDesc }
impl Drop for GScalarDesc {
fn drop(&mut self) {
extern "C" { fn cv_GScalarDesc_delete(instance: *mut c_void); }
unsafe { cv_GScalarDesc_delete(self.as_raw_mut_GScalarDesc()) };
}
}
unsafe impl Send for GScalarDesc {}
impl crate::gapi::GScalarDescTraitConst for GScalarDesc {
#[inline] fn as_raw_GScalarDesc(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GScalarDescTrait for GScalarDesc {
#[inline] fn as_raw_mut_GScalarDesc(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GScalarDesc {
}
/// Constant methods for [crate::gapi::GStreamingCompiled]
pub trait GStreamingCompiledTraitConst {
fn as_raw_GStreamingCompiled(&self) -> *const c_void;
/// Test if the pipeline is running.
///
///
/// Note: This method is not thread-safe (with respect to the user
/// side) at the moment. Protect the access if
/// start()/stop()/setSource() may be called on the same object in
/// multiple threads in your application.
///
/// ## Returns
/// true if the current stream is not over yet.
#[inline]
fn running(&self) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GStreamingCompiled_running_const(self.as_raw_GStreamingCompiled(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Check if compiled object is valid (non-empty)
///
/// ## Returns
/// true if the object is runnable (valid), false otherwise
#[inline]
fn to_bool(&self) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GStreamingCompiled_operator_bool_const(self.as_raw_GStreamingCompiled(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GStreamingCompiled]
pub trait GStreamingCompiledTrait: crate::gapi::GStreamingCompiledTraitConst {
fn as_raw_mut_GStreamingCompiled(&mut self) -> *mut c_void;
/// Specify the input data to GStreamingCompiled for
/// processing, a generic version.
///
/// Use gin() to create an input parameter vector.
///
/// Input vectors must have the same number of elements as defined
/// in the cv::GComputation protocol (at the moment of its
/// construction). Shapes of elements also must conform to protocol
/// (e.g. cv::Mat needs to be passed where cv::GMat has been
/// declared as input, and so on). Run-time exception is generated
/// on type mismatch.
///
/// In contrast with regular GCompiled, user can also pass an
/// object of type GVideoCapture for a GMat parameter of the parent
/// GComputation. The compiled pipeline will start fetching data
/// from that GVideoCapture and feeding it into the
/// pipeline. Pipeline stops when a GVideoCapture marks end of the
/// stream (or when stop() is called).
///
/// Passing a regular Mat for a GMat parameter makes it "infinite"
/// source -- pipeline may run forever feeding with this Mat until
/// stopped explicitly.
///
/// Currently only a single GVideoCapture is supported as input. If
/// the parent GComputation is declared with multiple input GMat's,
/// one of those can be specified as GVideoCapture but all others
/// must be regular Mat objects.
///
/// Throws if pipeline is already running. Use stop() and then
/// setSource() to run the graph on a new video stream.
///
///
/// Note: This method is not thread-safe (with respect to the user
/// side) at the moment. Protect the access if
/// start()/stop()/setSource() may be called on the same object in
/// multiple threads in your application.
///
/// ## Parameters
/// * ins: vector of inputs to process.
/// ## See also
/// gin
#[inline]
fn set_source(&mut self, mut ins: crate::gapi::GRunArgs) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GStreamingCompiled_setSource_GRunArgsRR(self.as_raw_mut_GStreamingCompiled(), ins.as_raw_mut_VectorOfGRunArg(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// @private -- Exclude this function from OpenCV documentation
#[inline]
fn set_source_1(&mut self, callback: &crate::gapi::ExtractArgsCallback) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GStreamingCompiled_setSource_const_ExtractArgsCallbackR(self.as_raw_mut_GStreamingCompiled(), callback.as_raw_ExtractArgsCallback(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Start the pipeline execution.
///
/// Use pull()/try_pull() to obtain data. Throws an exception if
/// a video source was not specified.
///
/// setSource() must be called first, even if the pipeline has been
/// working already and then stopped (explicitly via stop() or due
/// stream completion)
///
///
/// Note: This method is not thread-safe (with respect to the user
/// side) at the moment. Protect the access if
/// start()/stop()/setSource() may be called on the same object in
/// multiple threads in your application.
#[inline]
fn start(&mut self) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GStreamingCompiled_start(self.as_raw_mut_GStreamingCompiled(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// Stop (abort) processing the pipeline.
///
/// Note - it is not pause but a complete stop. Calling start()
/// will cause G-API to start processing the stream from the early beginning.
///
/// Throws if the pipeline is not running.
#[inline]
fn stop(&mut self) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GStreamingCompiled_stop(self.as_raw_mut_GStreamingCompiled(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// \addtogroup gapi_main_classes
/// /
///
/// Represents a computation (graph) compiled for streaming.
///
/// This class represents a product of graph compilation (calling
/// cv::GComputation::compileStreaming()). Objects of this class
/// actually do stream processing, and the whole pipeline execution
/// complexity is incapsulated into objects of this class. Execution
/// model has two levels: at the very top, the execution of a
/// heterogeneous graph is aggressively pipelined; at the very bottom
/// the execution of every internal block is determined by its
/// associated backend. Backends are selected based on kernel packages
/// passed via compilation arguments ( see [gapi_compile_args],
/// GNetworkPackage, GKernelPackage for details).
///
/// GStreamingCompiled objects have a "player" semantics -- there are
/// methods like start() and stop(). GStreamingCompiled has a full
/// control over a videostream and so is stateful. You need to specify the
/// input stream data using setSource() and then call start() to
/// actually start processing. After that, use pull() or try_pull() to
/// obtain next processed data frame from the graph in a blocking or
/// non-blocking way, respectively.
///
/// Currently a single GStreamingCompiled can process only one video
/// streat at time. Produce multiple GStreamingCompiled objects to run the
/// same graph on multiple video streams.
/// ## See also
/// GCompiled
pub struct GStreamingCompiled {
ptr: *mut c_void
}
opencv_type_boxed! { GStreamingCompiled }
impl Drop for GStreamingCompiled {
fn drop(&mut self) {
extern "C" { fn cv_GStreamingCompiled_delete(instance: *mut c_void); }
unsafe { cv_GStreamingCompiled_delete(self.as_raw_mut_GStreamingCompiled()) };
}
}
unsafe impl Send for GStreamingCompiled {}
impl crate::gapi::GStreamingCompiledTraitConst for GStreamingCompiled {
#[inline] fn as_raw_GStreamingCompiled(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GStreamingCompiledTrait for GStreamingCompiled {
#[inline] fn as_raw_mut_GStreamingCompiled(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GStreamingCompiled {
#[inline]
pub fn default() -> Result<crate::gapi::GStreamingCompiled> {
return_send!(via ocvrs_return);
unsafe { sys::cv_GStreamingCompiled_GStreamingCompiled(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GStreamingCompiled::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GTransform]
pub trait GTransformTraitConst {
fn as_raw_GTransform(&self) -> *const c_void;
#[inline]
fn description(&self) -> String {
let ret = unsafe { sys::cv_GTransform_getPropDescription_const(self.as_raw_GTransform()) };
let ret = unsafe { String::opencv_from_extern(ret) };
ret
}
}
/// Mutable methods for [crate::gapi::GTransform]
pub trait GTransformTrait: crate::gapi::GTransformTraitConst {
fn as_raw_mut_GTransform(&mut self) -> *mut c_void;
#[inline]
fn set_description(&mut self, val: &str) {
extern_container_arg!(nofail mut val);
let ret = unsafe { sys::cv_GTransform_setPropDescription_string(self.as_raw_mut_GTransform(), val.opencv_as_extern_mut()) };
ret
}
}
pub struct GTransform {
ptr: *mut c_void
}
opencv_type_boxed! { GTransform }
impl Drop for GTransform {
fn drop(&mut self) {
extern "C" { fn cv_GTransform_delete(instance: *mut c_void); }
unsafe { cv_GTransform_delete(self.as_raw_mut_GTransform()) };
}
}
unsafe impl Send for GTransform {}
impl crate::gapi::GTransformTraitConst for GTransform {
#[inline] fn as_raw_GTransform(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GTransformTrait for GTransform {
#[inline] fn as_raw_mut_GTransform(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GTransform {
}
/// Constant methods for [crate::gapi::GTypeInfo]
pub trait GTypeInfoTraitConst {
fn as_raw_GTypeInfo(&self) -> *const c_void;
#[inline]
fn shape(&self) -> crate::gapi::GShape {
return_send!(via ocvrs_return);
unsafe { sys::cv_GTypeInfo_getPropShape_const(self.as_raw_GTypeInfo(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
#[inline]
fn kind(&self) -> crate::gapi::OpaqueKind {
return_send!(via ocvrs_return);
unsafe { sys::cv_GTypeInfo_getPropKind_const(self.as_raw_GTypeInfo(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
}
/// Mutable methods for [crate::gapi::GTypeInfo]
pub trait GTypeInfoTrait: crate::gapi::GTypeInfoTraitConst {
fn as_raw_mut_GTypeInfo(&mut self) -> *mut c_void;
#[inline]
fn set_shape(&mut self, val: crate::gapi::GShape) {
let ret = unsafe { sys::cv_GTypeInfo_setPropShape_GShape(self.as_raw_mut_GTypeInfo(), val) };
ret
}
#[inline]
fn set_kind(&mut self, val: crate::gapi::OpaqueKind) {
let ret = unsafe { sys::cv_GTypeInfo_setPropKind_OpaqueKind(self.as_raw_mut_GTypeInfo(), val) };
ret
}
}
pub struct GTypeInfo {
ptr: *mut c_void
}
opencv_type_boxed! { GTypeInfo }
impl Drop for GTypeInfo {
fn drop(&mut self) {
extern "C" { fn cv_GTypeInfo_delete(instance: *mut c_void); }
unsafe { cv_GTypeInfo_delete(self.as_raw_mut_GTypeInfo()) };
}
}
unsafe impl Send for GTypeInfo {}
impl crate::gapi::GTypeInfoTraitConst for GTypeInfo {
#[inline] fn as_raw_GTypeInfo(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GTypeInfoTrait for GTypeInfo {
#[inline] fn as_raw_mut_GTypeInfo(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GTypeInfo {
}
/// Constant methods for [crate::gapi::MediaFrame]
pub trait MediaFrameTraitConst {
fn as_raw_MediaFrame(&self) -> *const c_void;
/// Returns a media frame descriptor -- the information
/// about the media format, dimensions, etc.
/// ## Returns
/// a cv::GFrameDesc
#[inline]
fn desc(&self) -> Result<crate::gapi::GFrameDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_MediaFrame_desc_const(self.as_raw_MediaFrame(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GFrameDesc::opencv_from_extern(ret) };
Ok(ret)
}
/// @private -- exclude from the OpenCV documentation for now.
#[inline]
fn blob_params(&self) -> Result<crate::gapi::any> {
return_send!(via ocvrs_return);
unsafe { sys::cv_MediaFrame_blobParams_const(self.as_raw_MediaFrame(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::any::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::MediaFrame]
pub trait MediaFrameTrait: crate::gapi::MediaFrameTraitConst {
fn as_raw_mut_MediaFrame(&mut self) -> *mut c_void;
}
/// \addtogroup gapi_data_structures
///
/// Extra G-API data structures used to pass input/output data
/// to the graph for processing.
/// /
///
/// cv::MediaFrame class represents an image/media frame
/// obtained from an external source.
///
/// cv::MediaFrame represents image data as specified in
/// cv::MediaFormat. cv::MediaFrame is designed to be a thin wrapper over some
/// external memory of buffer; the class itself provides an uniform
/// interface over such types of memory. cv::MediaFrame wraps data from
/// a camera driver or from a media codec and provides an abstraction
/// layer over this memory to G-API. MediaFrame defines a compact interface
/// to access and manage the underlying data; the implementation is
/// fully defined by the associated Adapter (which is usually
/// user-defined).
/// ## See also
/// cv::RMat
pub struct MediaFrame {
ptr: *mut c_void
}
opencv_type_boxed! { MediaFrame }
impl Drop for MediaFrame {
fn drop(&mut self) {
extern "C" { fn cv_MediaFrame_delete(instance: *mut c_void); }
unsafe { cv_MediaFrame_delete(self.as_raw_mut_MediaFrame()) };
}
}
unsafe impl Send for MediaFrame {}
impl crate::gapi::MediaFrameTraitConst for MediaFrame {
#[inline] fn as_raw_MediaFrame(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::MediaFrameTrait for MediaFrame {
#[inline] fn as_raw_mut_MediaFrame(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl MediaFrame {
/// Constructs an empty MediaFrame
///
/// The constructed object has no any data associated with it.
#[inline]
pub fn default() -> Result<crate::gapi::MediaFrame> {
return_send!(via ocvrs_return);
unsafe { sys::cv_MediaFrame_MediaFrame(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::MediaFrame::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::MediaFrame_IAdapter]
pub trait MediaFrame_IAdapterConst {
fn as_raw_MediaFrame_IAdapter(&self) -> *const c_void;
#[inline]
fn meta(&self) -> Result<crate::gapi::GFrameDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_MediaFrame_IAdapter_meta_const(self.as_raw_MediaFrame_IAdapter(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GFrameDesc::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn blob_params(&self) -> Result<crate::gapi::any> {
return_send!(via ocvrs_return);
unsafe { sys::cv_MediaFrame_IAdapter_blobParams_const(self.as_raw_MediaFrame_IAdapter(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::any::opencv_from_extern(ret) };
Ok(ret)
}
}
/// An interface class for MediaFrame data adapters.
///
/// Implement this interface to wrap media data in the MediaFrame. It
/// makes sense to implement this class if there is a custom
/// cv::gapi::wip::IStreamSource defined -- in this case, a stream
/// source can produce MediaFrame objects with this adapter and the
/// media data may be passed to graph without any copy. For example, a
/// GStreamer-based stream source can implement an adapter over
/// `GstBuffer` and G-API will transparently use it in the graph.
pub trait MediaFrame_IAdapter: crate::gapi::MediaFrame_IAdapterConst {
fn as_raw_mut_MediaFrame_IAdapter(&mut self) -> *mut c_void;
}
/// Constant methods for [crate::gapi::MediaFrame_View]
pub trait MediaFrame_ViewTraitConst {
fn as_raw_MediaFrame_View(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::MediaFrame_View]
pub trait MediaFrame_ViewTrait: crate::gapi::MediaFrame_ViewTraitConst {
fn as_raw_mut_MediaFrame_View(&mut self) -> *mut c_void;
}
/// Provides access to the MediaFrame's underlying data.
///
/// This object contains the necessary information to access the pixel
/// data of the associated MediaFrame: arrays of pointers and strides
/// (distance between every plane row, in bytes) for every image
/// plane, as defined in cv::MediaFormat.
/// There may be up to four image planes in MediaFrame.
///
/// Depending on the MediaFrame::Access flag passed in
/// MediaFrame::access(), a MediaFrame::View may be read- or
/// write-only.
///
/// Depending on the MediaFrame::IAdapter implementation associated
/// with the parent MediaFrame, writing to memory with
/// MediaFrame::Access::R flag may have no effect or lead to
/// undefined behavior. Same applies to reading the memory with
/// MediaFrame::Access::W flag -- again, depending on the IAdapter
/// implementation, the host-side buffer the view provides access to
/// may have no current data stored in (so in-place editing of the
/// buffer contents may not be possible).
///
/// MediaFrame::View objects must be handled carefully, as an external
/// resource associated with MediaFrame may be locked for the time the
/// MediaFrame::View object exists. Obtaining MediaFrame::View should
/// be seen as "map" and destroying it as "unmap" in the "map/unmap"
/// idiom (applicable to OpenCL, device memory, remote
/// memory).
///
/// When a MediaFrame buffer is accessed for writing, and the memory
/// under MediaFrame::View::Ptrs is altered, the data synchronization
/// of a host-side and device/remote buffer is not guaranteed until the
/// MediaFrame::View is destroyed. In other words, the real data on the
/// device or in a remote target may be updated at the MediaFrame::View
/// destruction only -- but it depends on the associated
/// MediaFrame::IAdapter implementation.
pub struct MediaFrame_View {
ptr: *mut c_void
}
opencv_type_boxed! { MediaFrame_View }
impl Drop for MediaFrame_View {
fn drop(&mut self) {
extern "C" { fn cv_MediaFrame_View_delete(instance: *mut c_void); }
unsafe { cv_MediaFrame_View_delete(self.as_raw_mut_MediaFrame_View()) };
}
}
unsafe impl Send for MediaFrame_View {}
impl crate::gapi::MediaFrame_ViewTraitConst for MediaFrame_View {
#[inline] fn as_raw_MediaFrame_View(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::MediaFrame_ViewTrait for MediaFrame_View {
#[inline] fn as_raw_mut_MediaFrame_View(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl MediaFrame_View {
pub const MAX_PLANES: u32 = 4;
/// @private
#[inline]
pub fn copy_mut(mut unnamed: crate::gapi::MediaFrame_View) -> crate::gapi::MediaFrame_View {
let ret = unsafe { sys::cv_MediaFrame_View_View_ViewRR(unnamed.as_raw_mut_MediaFrame_View()) };
let ret = unsafe { crate::gapi::MediaFrame_View::opencv_from_extern(ret) };
ret
}
}
/// Constant methods for [crate::gapi::RMat]
pub trait RMatTraitConst {
fn as_raw_RMat(&self) -> *const c_void;
#[inline]
fn desc(&self) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_desc_const(self.as_raw_RMat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::RMat]
pub trait RMatTrait: crate::gapi::RMatTraitConst {
fn as_raw_mut_RMat(&mut self) -> *mut c_void;
}
/// \addtogroup gapi_data_structures
pub struct RMat {
ptr: *mut c_void
}
opencv_type_boxed! { RMat }
impl Drop for RMat {
fn drop(&mut self) {
extern "C" { fn cv_RMat_delete(instance: *mut c_void); }
unsafe { cv_RMat_delete(self.as_raw_mut_RMat()) };
}
}
unsafe impl Send for RMat {}
impl crate::gapi::RMatTraitConst for RMat {
#[inline] fn as_raw_RMat(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::RMatTrait for RMat {
#[inline] fn as_raw_mut_RMat(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl RMat {
#[inline]
pub fn default() -> crate::gapi::RMat {
let ret = unsafe { sys::cv_RMat_RMat() };
let ret = unsafe { crate::gapi::RMat::opencv_from_extern(ret) };
ret
}
}
impl Default for RMat {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// Constant methods for [crate::gapi::RMat_IAdapter]
pub trait RMat_IAdapterConst {
fn as_raw_RMat_IAdapter(&self) -> *const c_void;
#[inline]
fn desc(&self) -> Result<crate::gapi::GMatDesc> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_IAdapter_desc_const(self.as_raw_RMat_IAdapter(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GMatDesc::opencv_from_extern(ret) };
Ok(ret)
}
}
pub trait RMat_IAdapter: crate::gapi::RMat_IAdapterConst {
fn as_raw_mut_RMat_IAdapter(&mut self) -> *mut c_void;
}
/// Constant methods for [crate::gapi::RMat_View]
pub trait RMat_ViewTraitConst {
fn as_raw_RMat_View(&self) -> *const c_void;
#[inline]
fn size(&self) -> Result<core::Size> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_size_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn dims(&self) -> Result<core::Vector<i32>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_dims_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Vector::<i32>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn cols(&self) -> Result<i32> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_cols_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn rows(&self) -> Result<i32> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_rows_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn typ(&self) -> Result<i32> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_type_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn depth(&self) -> Result<i32> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_depth_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn chan(&self) -> Result<i32> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_chan_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn elem_size(&self) -> Result<size_t> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_elemSize_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
/// ## C++ default parameters
/// * i: 0
#[inline]
fn step(&self, i: size_t) -> Result<size_t> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_step_const_size_t(self.as_raw_RMat_View(), i, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn steps(&self) -> Result<core::Vector<size_t>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_RMat_View_steps_const(self.as_raw_RMat_View(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Vector::<size_t>::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::RMat_View]
pub trait RMat_ViewTrait: crate::gapi::RMat_ViewTraitConst {
fn as_raw_mut_RMat_View(&mut self) -> *mut c_void;
}
pub struct RMat_View {
ptr: *mut c_void
}
opencv_type_boxed! { RMat_View }
impl Drop for RMat_View {
fn drop(&mut self) {
extern "C" { fn cv_RMat_View_delete(instance: *mut c_void); }
unsafe { cv_RMat_View_delete(self.as_raw_mut_RMat_View()) };
}
}
unsafe impl Send for RMat_View {}
impl crate::gapi::RMat_ViewTraitConst for RMat_View {
#[inline] fn as_raw_RMat_View(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::RMat_ViewTrait for RMat_View {
#[inline] fn as_raw_mut_RMat_View(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl RMat_View {
#[inline]
pub fn default() -> crate::gapi::RMat_View {
let ret = unsafe { sys::cv_RMat_View_View() };
let ret = unsafe { crate::gapi::RMat_View::opencv_from_extern(ret) };
ret
}
#[inline]
pub fn copy_mut(mut unnamed: crate::gapi::RMat_View) -> crate::gapi::RMat_View {
let ret = unsafe { sys::cv_RMat_View_View_ViewRR(unnamed.as_raw_mut_RMat_View()) };
let ret = unsafe { crate::gapi::RMat_View::opencv_from_extern(ret) };
ret
}
}
impl Default for RMat_View {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// Constant methods for [crate::gapi::ExtractArgsCallback]
pub trait ExtractArgsCallbackTraitConst {
fn as_raw_ExtractArgsCallback(&self) -> *const c_void;
#[inline]
fn apply(&self, info: &crate::gapi::GTypesInfo) -> Result<core::Vector<crate::gapi::GRunArg>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_detail_ExtractArgsCallback_operator___const_const_GTypesInfoR(self.as_raw_ExtractArgsCallback(), info.as_raw_VectorOfGTypeInfo(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Vector::<crate::gapi::GRunArg>::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::ExtractArgsCallback]
pub trait ExtractArgsCallbackTrait: crate::gapi::ExtractArgsCallbackTraitConst {
fn as_raw_mut_ExtractArgsCallback(&mut self) -> *mut c_void;
}
pub struct ExtractArgsCallback {
ptr: *mut c_void
}
opencv_type_boxed! { ExtractArgsCallback }
impl Drop for ExtractArgsCallback {
fn drop(&mut self) {
extern "C" { fn cv_ExtractArgsCallback_delete(instance: *mut c_void); }
unsafe { cv_ExtractArgsCallback_delete(self.as_raw_mut_ExtractArgsCallback()) };
}
}
unsafe impl Send for ExtractArgsCallback {}
impl crate::gapi::ExtractArgsCallbackTraitConst for ExtractArgsCallback {
#[inline] fn as_raw_ExtractArgsCallback(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::ExtractArgsCallbackTrait for ExtractArgsCallback {
#[inline] fn as_raw_mut_ExtractArgsCallback(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl ExtractArgsCallback {
}
/// Constant methods for [crate::gapi::ExtractMetaCallback]
pub trait ExtractMetaCallbackTraitConst {
fn as_raw_ExtractMetaCallback(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::ExtractMetaCallback]
pub trait ExtractMetaCallbackTrait: crate::gapi::ExtractMetaCallbackTraitConst {
fn as_raw_mut_ExtractMetaCallback(&mut self) -> *mut c_void;
}
pub struct ExtractMetaCallback {
ptr: *mut c_void
}
opencv_type_boxed! { ExtractMetaCallback }
impl Drop for ExtractMetaCallback {
fn drop(&mut self) {
extern "C" { fn cv_ExtractMetaCallback_delete(instance: *mut c_void); }
unsafe { cv_ExtractMetaCallback_delete(self.as_raw_mut_ExtractMetaCallback()) };
}
}
unsafe impl Send for ExtractMetaCallback {}
impl crate::gapi::ExtractMetaCallbackTraitConst for ExtractMetaCallback {
#[inline] fn as_raw_ExtractMetaCallback(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::ExtractMetaCallbackTrait for ExtractMetaCallback {
#[inline] fn as_raw_mut_ExtractMetaCallback(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl ExtractMetaCallback {
}
/// Constant methods for [crate::gapi::GArrayU]
pub trait GArrayUTraitConst {
fn as_raw_GArrayU(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GArrayU]
pub trait GArrayUTrait: crate::gapi::GArrayUTraitConst {
fn as_raw_mut_GArrayU(&mut self) -> *mut c_void;
}
pub struct GArrayU {
ptr: *mut c_void
}
opencv_type_boxed! { GArrayU }
impl Drop for GArrayU {
fn drop(&mut self) {
extern "C" { fn cv_GArrayU_delete(instance: *mut c_void); }
unsafe { cv_GArrayU_delete(self.as_raw_mut_GArrayU()) };
}
}
unsafe impl Send for GArrayU {}
impl crate::gapi::GArrayUTraitConst for GArrayU {
#[inline] fn as_raw_GArrayU(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GArrayUTrait for GArrayU {
#[inline] fn as_raw_mut_GArrayU(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GArrayU {
}
/// Constant methods for [crate::gapi::GOpaqueU]
pub trait GOpaqueUTraitConst {
fn as_raw_GOpaqueU(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::GOpaqueU]
pub trait GOpaqueUTrait: crate::gapi::GOpaqueUTraitConst {
fn as_raw_mut_GOpaqueU(&mut self) -> *mut c_void;
}
pub struct GOpaqueU {
ptr: *mut c_void
}
opencv_type_boxed! { GOpaqueU }
impl Drop for GOpaqueU {
fn drop(&mut self) {
extern "C" { fn cv_GOpaqueU_delete(instance: *mut c_void); }
unsafe { cv_GOpaqueU_delete(self.as_raw_mut_GOpaqueU()) };
}
}
unsafe impl Send for GOpaqueU {}
impl crate::gapi::GOpaqueUTraitConst for GOpaqueU {
#[inline] fn as_raw_GOpaqueU(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GOpaqueUTrait for GOpaqueU {
#[inline] fn as_raw_mut_GOpaqueU(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GOpaqueU {
}
/// Constant methods for [crate::gapi::GBackend]
pub trait GBackendTraitConst {
fn as_raw_GBackend(&self) -> *const c_void;
#[inline]
fn equals(&self, rhs: &crate::gapi::GBackend) -> Result<bool> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_GBackend_operatorEQ_const_const_GBackendR(self.as_raw_GBackend(), rhs.as_raw_GBackend(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::GBackend]
pub trait GBackendTrait: crate::gapi::GBackendTraitConst {
fn as_raw_mut_GBackend(&mut self) -> *mut c_void;
}
/// @private
pub struct GBackend {
ptr: *mut c_void
}
opencv_type_boxed! { GBackend }
impl Drop for GBackend {
fn drop(&mut self) {
extern "C" { fn cv_GBackend_delete(instance: *mut c_void); }
unsafe { cv_GBackend_delete(self.as_raw_mut_GBackend()) };
}
}
unsafe impl Send for GBackend {}
impl crate::gapi::GBackendTraitConst for GBackend {
#[inline] fn as_raw_GBackend(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GBackendTrait for GBackend {
#[inline] fn as_raw_mut_GBackend(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl GBackend {
#[inline]
pub fn default() -> Result<crate::gapi::GBackend> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_GBackend_GBackend(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GBackend::opencv_from_extern(ret) };
Ok(ret)
}
}
/// Constant methods for [crate::gapi::GFunctor]
pub trait GFunctorConst {
fn as_raw_GFunctor(&self) -> *const c_void;
#[inline]
fn impl_(&self) -> Result<crate::gapi::GKernelImpl> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_GFunctor_impl_const(self.as_raw_GFunctor(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GKernelImpl::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn backend(&self) -> Result<crate::gapi::GBackend> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_GFunctor_backend_const(self.as_raw_GFunctor(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::GBackend::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn id(&self) -> Result<String> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_GFunctor_id_const(self.as_raw_GFunctor(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { String::opencv_from_extern(ret) };
Ok(ret)
}
}
/// @private
pub trait GFunctor: crate::gapi::GFunctorConst {
fn as_raw_mut_GFunctor(&mut self) -> *mut c_void;
}
/// Constant methods for [crate::gapi::Scalar]
pub trait ScalarTraitConst {
fn as_raw_Scalar(&self) -> *const c_void;
#[inline]
fn get(&self, i: i32) -> Result<f64> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_own_Scalar_operator___const_int(self.as_raw_Scalar(), i, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Mutable methods for [crate::gapi::Scalar]
pub trait ScalarTrait: crate::gapi::ScalarTraitConst {
fn as_raw_mut_Scalar(&mut self) -> *mut c_void;
#[inline]
fn val(&mut self) -> &mut [f64; 4] {
let ret = unsafe { sys::cv_gapi_own_Scalar_getPropVal(self.as_raw_mut_Scalar()) };
let ret = unsafe { ret.as_mut() }.expect("Function returned null pointer");
ret
}
#[inline]
fn get_mut(&mut self, i: i32) -> Result<f64> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_own_Scalar_operator___int(self.as_raw_mut_Scalar(), i, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct Scalar {
ptr: *mut c_void
}
opencv_type_boxed! { Scalar }
impl Drop for Scalar {
fn drop(&mut self) {
extern "C" { fn cv_Scalar_delete(instance: *mut c_void); }
unsafe { cv_Scalar_delete(self.as_raw_mut_Scalar()) };
}
}
unsafe impl Send for Scalar {}
impl crate::gapi::ScalarTraitConst for Scalar {
#[inline] fn as_raw_Scalar(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::ScalarTrait for Scalar {
#[inline] fn as_raw_mut_Scalar(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl Scalar {
#[inline]
pub fn default() -> crate::gapi::Scalar {
let ret = unsafe { sys::cv_gapi_own_Scalar_Scalar() };
let ret = unsafe { crate::gapi::Scalar::opencv_from_extern(ret) };
ret
}
#[inline]
pub fn new(v0: f64) -> Result<crate::gapi::Scalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_own_Scalar_Scalar_double(v0, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::Scalar::opencv_from_extern(ret) };
Ok(ret)
}
/// ## C++ default parameters
/// * v2: 0
/// * v3: 0
#[inline]
pub fn new_1(v0: f64, v1: f64, v2: f64, v3: f64) -> Result<crate::gapi::Scalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_own_Scalar_Scalar_double_double_double_double(v0, v1, v2, v3, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::Scalar::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn all(v0: f64) -> Result<crate::gapi::Scalar> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_own_Scalar_all_double(v0, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::Scalar::opencv_from_extern(ret) };
Ok(ret)
}
}
impl Default for Scalar {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// Specify queue capacity for streaming execution.
///
/// In the streaming mode the pipeline steps are connected with queues
/// and this compile argument controls every queue's size.
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq)]
pub struct queue_capacity {
pub capacity: size_t,
}
opencv_type_simple! { crate::gapi::queue_capacity }
impl queue_capacity {
/// ## C++ default parameters
/// * cap: 1
#[inline]
pub fn new(cap: size_t) -> Result<crate::gapi::queue_capacity> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_streaming_queue_capacity_queue_capacity_size_t(cap, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Constant methods for [crate::gapi::use_only]
pub trait use_onlyTraitConst {
fn as_raw_use_only(&self) -> *const c_void;
#[inline]
fn pkg(&self) -> crate::gapi::GKernelPackage {
let ret = unsafe { sys::cv_gapi_use_only_getPropPkg_const(self.as_raw_use_only()) };
let ret = unsafe { crate::gapi::GKernelPackage::opencv_from_extern(ret) };
ret
}
}
/// Mutable methods for [crate::gapi::use_only]
pub trait use_onlyTrait: crate::gapi::use_onlyTraitConst {
fn as_raw_mut_use_only(&mut self) -> *mut c_void;
#[inline]
fn set_pkg(&mut self, mut val: crate::gapi::GKernelPackage) {
let ret = unsafe { sys::cv_gapi_use_only_setPropPkg_GKernelPackage(self.as_raw_mut_use_only(), val.as_raw_mut_GKernelPackage()) };
ret
}
}
/// \addtogroup gapi_compile_args
/// /
///
/// cv::gapi::use_only() is a special combinator which hints G-API to use only
/// kernels specified in cv::GComputation::compile() (and not to extend kernels available by
/// default with that package).
pub struct use_only {
ptr: *mut c_void
}
opencv_type_boxed! { use_only }
impl Drop for use_only {
fn drop(&mut self) {
extern "C" { fn cv_use_only_delete(instance: *mut c_void); }
unsafe { cv_use_only_delete(self.as_raw_mut_use_only()) };
}
}
unsafe impl Send for use_only {}
impl crate::gapi::use_onlyTraitConst for use_only {
#[inline] fn as_raw_use_only(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::use_onlyTrait for use_only {
#[inline] fn as_raw_mut_use_only(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl use_only {
}
/// Constant methods for [crate::gapi::Data]
pub trait DataTraitConst: crate::gapi::GRunArgTraitConst {
fn as_raw_Data(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::Data]
pub trait DataTrait: crate::gapi::DataTraitConst + crate::gapi::GRunArgTrait {
fn as_raw_mut_Data(&mut self) -> *mut c_void;
}
/// This aggregate type represents all types which G-API can
/// handle (via variant).
///
/// It only exists to overcome C++ language limitations (where a
/// `using`-defined class can't be forward-declared).
pub struct Data {
ptr: *mut c_void
}
opencv_type_boxed! { Data }
impl Drop for Data {
fn drop(&mut self) {
extern "C" { fn cv_Data_delete(instance: *mut c_void); }
unsafe { cv_Data_delete(self.as_raw_mut_Data()) };
}
}
unsafe impl Send for Data {}
impl crate::gapi::GRunArgTraitConst for Data {
#[inline] fn as_raw_GRunArg(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::GRunArgTrait for Data {
#[inline] fn as_raw_mut_GRunArg(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::gapi::DataTraitConst for Data {
#[inline] fn as_raw_Data(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::DataTrait for Data {
#[inline] fn as_raw_mut_Data(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl Data {
}
boxed_cast_base! { Data, crate::gapi::GRunArg, cv_Data_to_GRunArg }
/// This structure represents a circle to draw.
///
/// Parameters match cv::circle().
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq)]
pub struct Circle {
/// The center of the circle
pub center: core::Point,
/// The radius of the circle
pub radius: i32,
/// The color of the circle
pub color: core::Scalar,
/// The thickness of the circle outline, if positive. Negative values, like #FILLED, mean that a filled circle is to be drawn
pub thick: i32,
/// The Type of the circle boundary. See #LineTypes
pub lt: i32,
/// The Number of fractional bits in the coordinates of the center and in the radius value
pub shift: i32,
}
opencv_type_simple! { crate::gapi::Circle }
impl Circle {
/// Circle constructor
///
/// ## Parameters
/// * center_: The center of the circle
/// * radius_: The radius of the circle
/// * color_: The color of the circle
/// * thick_: The thickness of the circle outline, if positive. Negative values, like #FILLED, mean that a filled circle is to be drawn
/// * lt_: The Type of the circle boundary. See #LineTypes
/// * shift_: The Number of fractional bits in the coordinates of the center and in the radius value
///
/// ## C++ default parameters
/// * thick_: 1
/// * lt_: 8
/// * shift_: 0
#[inline]
pub fn new(center_: core::Point, radius_: i32, color_: core::Scalar, thick_: i32, lt_: i32, shift_: i32) -> Result<crate::gapi::Circle> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Circle_Circle_const_PointR_int_const_ScalarR_int_int_int(¢er_, radius_, &color_, thick_, lt_, shift_, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn default() -> crate::gapi::Circle {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Circle_Circle(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
}
impl Default for Circle {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// Constant methods for [crate::gapi::Image]
pub trait ImageTraitConst {
fn as_raw_Image(&self) -> *const c_void;
/// The bottom-left corner of the image
#[inline]
fn org(&self) -> core::Point {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Image_getPropOrg_const(self.as_raw_Image(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
/// Image to draw
#[inline]
fn img(&self) -> core::Mat {
let ret = unsafe { sys::cv_gapi_wip_draw_Image_getPropImg_const(self.as_raw_Image()) };
let ret = unsafe { core::Mat::opencv_from_extern(ret) };
ret
}
/// Alpha channel for image to draw (same size and number of channels)
#[inline]
fn alpha(&self) -> core::Mat {
let ret = unsafe { sys::cv_gapi_wip_draw_Image_getPropAlpha_const(self.as_raw_Image()) };
let ret = unsafe { core::Mat::opencv_from_extern(ret) };
ret
}
}
/// Mutable methods for [crate::gapi::Image]
pub trait ImageTrait: crate::gapi::ImageTraitConst {
fn as_raw_mut_Image(&mut self) -> *mut c_void;
/// The bottom-left corner of the image
#[inline]
fn set_org(&mut self, val: core::Point) {
let ret = unsafe { sys::cv_gapi_wip_draw_Image_setPropOrg_Point(self.as_raw_mut_Image(), val.opencv_as_extern()) };
ret
}
/// Image to draw
#[inline]
fn set_img(&mut self, mut val: core::Mat) {
let ret = unsafe { sys::cv_gapi_wip_draw_Image_setPropImg_Mat(self.as_raw_mut_Image(), val.as_raw_mut_Mat()) };
ret
}
/// Alpha channel for image to draw (same size and number of channels)
#[inline]
fn set_alpha(&mut self, mut val: core::Mat) {
let ret = unsafe { sys::cv_gapi_wip_draw_Image_setPropAlpha_Mat(self.as_raw_mut_Image(), val.as_raw_mut_Mat()) };
ret
}
}
/// This structure represents an image to draw.
///
/// Image is blended on a frame using the specified mask.
pub struct Image {
ptr: *mut c_void
}
opencv_type_boxed! { Image }
impl Drop for Image {
fn drop(&mut self) {
extern "C" { fn cv_Image_delete(instance: *mut c_void); }
unsafe { cv_Image_delete(self.as_raw_mut_Image()) };
}
}
unsafe impl Send for Image {}
impl crate::gapi::ImageTraitConst for Image {
#[inline] fn as_raw_Image(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::ImageTrait for Image {
#[inline] fn as_raw_mut_Image(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl Image {
/// Mosaic constructor
///
/// ## Parameters
/// * org_: The bottom-left corner of the image
/// * img_: Image to draw
/// * alpha_: Alpha channel for image to draw (same size and number of channels)
#[inline]
pub fn new(org_: core::Point, img_: &core::Mat, alpha_: &core::Mat) -> Result<crate::gapi::Image> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Image_Image_const_PointR_const_MatR_const_MatR(&org_, img_.as_raw_Mat(), alpha_.as_raw_Mat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::Image::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn default() -> crate::gapi::Image {
let ret = unsafe { sys::cv_gapi_wip_draw_Image_Image() };
let ret = unsafe { crate::gapi::Image::opencv_from_extern(ret) };
ret
}
}
impl Default for Image {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// This structure represents a line to draw.
///
/// Parameters match cv::line().
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq)]
pub struct Line {
/// The first point of the line segment
pub pt1: core::Point,
/// The second point of the line segment
pub pt2: core::Point,
/// The line color
pub color: core::Scalar,
/// The thickness of line
pub thick: i32,
/// The Type of the line. See #LineTypes
pub lt: i32,
/// The number of fractional bits in the point coordinates
pub shift: i32,
}
opencv_type_simple! { crate::gapi::Line }
impl Line {
/// Line constructor
///
/// ## Parameters
/// * pt1_: The first point of the line segment
/// * pt2_: The second point of the line segment
/// * color_: The line color
/// * thick_: The thickness of line
/// * lt_: The Type of the line. See #LineTypes
/// * shift_: The number of fractional bits in the point coordinates
///
/// ## C++ default parameters
/// * thick_: 1
/// * lt_: 8
/// * shift_: 0
#[inline]
pub fn new(pt1_: core::Point, pt2_: core::Point, color_: core::Scalar, thick_: i32, lt_: i32, shift_: i32) -> Result<crate::gapi::Line> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Line_Line_const_PointR_const_PointR_const_ScalarR_int_int_int(&pt1_, &pt2_, &color_, thick_, lt_, shift_, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn default() -> crate::gapi::Line {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Line_Line(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
}
impl Default for Line {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// This structure represents a mosaicing operation.
///
/// Mosaicing is a very basic method to obfuscate regions in the image.
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq)]
pub struct Mosaic {
/// Coordinates of the mosaic
pub mos: core::Rect,
/// Cell size (same for X, Y)
pub cell_sz: i32,
/// Decimation (0 stands for no decimation)
pub decim: i32,
}
opencv_type_simple! { crate::gapi::Mosaic }
impl Mosaic {
/// Mosaic constructor
///
/// ## Parameters
/// * mos_: Coordinates of the mosaic
/// * cellSz_: Cell size (same for X, Y)
/// * decim_: Decimation (0 stands for no decimation)
#[inline]
pub fn new(mos_: core::Rect, cell_sz_: i32, decim_: i32) -> Result<crate::gapi::Mosaic> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Mosaic_Mosaic_const_RectR_int_int(&mos_, cell_sz_, decim_, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn default() -> Result<crate::gapi::Mosaic> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Mosaic_Mosaic(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
/// Constant methods for [crate::gapi::Poly]
pub trait PolyTraitConst {
fn as_raw_Poly(&self) -> *const c_void;
/// Points to connect
#[inline]
fn points(&self) -> core::Vector<core::Point> {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_getPropPoints_const(self.as_raw_Poly()) };
let ret = unsafe { core::Vector::<core::Point>::opencv_from_extern(ret) };
ret
}
/// The line color
#[inline]
fn color(&self) -> core::Scalar {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Poly_getPropColor_const(self.as_raw_Poly(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
/// The thickness of line
#[inline]
fn thick(&self) -> i32 {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_getPropThick_const(self.as_raw_Poly()) };
ret
}
/// The Type of the line. See #LineTypes
#[inline]
fn lt(&self) -> i32 {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_getPropLt_const(self.as_raw_Poly()) };
ret
}
/// The number of fractional bits in the point coordinate
#[inline]
fn shift(&self) -> i32 {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_getPropShift_const(self.as_raw_Poly()) };
ret
}
}
/// Mutable methods for [crate::gapi::Poly]
pub trait PolyTrait: crate::gapi::PolyTraitConst {
fn as_raw_mut_Poly(&mut self) -> *mut c_void;
/// Points to connect
#[inline]
fn set_points(&mut self, mut val: core::Vector<core::Point>) {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_setPropPoints_vectorLPointG(self.as_raw_mut_Poly(), val.as_raw_mut_VectorOfPoint()) };
ret
}
/// The line color
#[inline]
fn set_color(&mut self, val: core::Scalar) {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_setPropColor_Scalar(self.as_raw_mut_Poly(), val.opencv_as_extern()) };
ret
}
/// The thickness of line
#[inline]
fn set_thick(&mut self, val: i32) {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_setPropThick_int(self.as_raw_mut_Poly(), val) };
ret
}
/// The Type of the line. See #LineTypes
#[inline]
fn set_lt(&mut self, val: i32) {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_setPropLt_int(self.as_raw_mut_Poly(), val) };
ret
}
/// The number of fractional bits in the point coordinate
#[inline]
fn set_shift(&mut self, val: i32) {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_setPropShift_int(self.as_raw_mut_Poly(), val) };
ret
}
}
/// This structure represents a polygon to draw.
pub struct Poly {
ptr: *mut c_void
}
opencv_type_boxed! { Poly }
impl Drop for Poly {
fn drop(&mut self) {
extern "C" { fn cv_Poly_delete(instance: *mut c_void); }
unsafe { cv_Poly_delete(self.as_raw_mut_Poly()) };
}
}
unsafe impl Send for Poly {}
impl crate::gapi::PolyTraitConst for Poly {
#[inline] fn as_raw_Poly(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::PolyTrait for Poly {
#[inline] fn as_raw_mut_Poly(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl Poly {
/// Mosaic constructor
///
/// ## Parameters
/// * points_: Points to connect
/// * color_: The line color
/// * thick_: The thickness of line
/// * lt_: The Type of the line. See #LineTypes
/// * shift_: The number of fractional bits in the point coordinate
///
/// ## C++ default parameters
/// * thick_: 1
/// * lt_: 8
/// * shift_: 0
#[inline]
pub fn new(points_: &core::Vector<core::Point>, color_: core::Scalar, thick_: i32, lt_: i32, shift_: i32) -> Result<crate::gapi::Poly> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Poly_Poly_const_vectorLPointGR_const_ScalarR_int_int_int(points_.as_raw_VectorOfPoint(), &color_, thick_, lt_, shift_, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::Poly::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn default() -> crate::gapi::Poly {
let ret = unsafe { sys::cv_gapi_wip_draw_Poly_Poly() };
let ret = unsafe { crate::gapi::Poly::opencv_from_extern(ret) };
ret
}
}
impl Default for Poly {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// This structure represents a rectangle to draw.
///
/// Parameters match cv::rectangle().
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq)]
pub struct Rect {
/// Coordinates of the rectangle
pub rect: core::Rect,
/// The rectangle color or brightness (grayscale image)
pub color: core::Scalar,
/// The thickness of lines that make up the rectangle. Negative values, like #FILLED, mean that the function has to draw a filled rectangle
pub thick: i32,
/// The type of the line. See #LineTypes
pub lt: i32,
/// The number of fractional bits in the point coordinates
pub shift: i32,
}
opencv_type_simple! { crate::gapi::Rect }
impl Rect {
/// Rect constructor
///
/// ## Parameters
/// * rect_: Coordinates of the rectangle
/// * color_: The bottom-left corner of the text string in the image
/// * thick_: The thickness of lines that make up the rectangle. Negative values, like #FILLED, mean that the function has to draw a filled rectangle
/// * lt_: The type of the line. See #LineTypes
/// * shift_: The number of fractional bits in the point coordinates
///
/// ## C++ default parameters
/// * thick_: 1
/// * lt_: 8
/// * shift_: 0
#[inline]
pub fn new(rect_: core::Rect, color_: core::Scalar, thick_: i32, lt_: i32, shift_: i32) -> Result<crate::gapi::Rect> {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Rect_Rect_const_RectR_const_ScalarR_int_int_int(&rect_, &color_, thick_, lt_, shift_, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn default() -> crate::gapi::Rect {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Rect_Rect(ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
}
impl Default for Rect {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// Constant methods for [crate::gapi::Text]
pub trait TextTraitConst {
fn as_raw_Text(&self) -> *const c_void;
/// The text string to be drawn
#[inline]
fn text(&self) -> String {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_getPropText_const(self.as_raw_Text()) };
let ret = unsafe { String::opencv_from_extern(ret) };
ret
}
/// The bottom-left corner of the text string in the image
#[inline]
fn org(&self) -> core::Point {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Text_getPropOrg_const(self.as_raw_Text(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
/// The font type, see #HersheyFonts
#[inline]
fn ff(&self) -> i32 {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_getPropFf_const(self.as_raw_Text()) };
ret
}
/// The font scale factor that is multiplied by the font-specific base size
#[inline]
fn fs(&self) -> f64 {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_getPropFs_const(self.as_raw_Text()) };
ret
}
/// The text color
#[inline]
fn color(&self) -> core::Scalar {
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Text_getPropColor_const(self.as_raw_Text(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
/// The thickness of the lines used to draw a text
#[inline]
fn thick(&self) -> i32 {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_getPropThick_const(self.as_raw_Text()) };
ret
}
/// The line type. See #LineTypes
#[inline]
fn lt(&self) -> i32 {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_getPropLt_const(self.as_raw_Text()) };
ret
}
/// When true, the image data origin is at the bottom-left corner. Otherwise, it is at the top-left corner
#[inline]
fn bottom_left_origin(&self) -> bool {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_getPropBottom_left_origin_const(self.as_raw_Text()) };
ret
}
}
/// Mutable methods for [crate::gapi::Text]
pub trait TextTrait: crate::gapi::TextTraitConst {
fn as_raw_mut_Text(&mut self) -> *mut c_void;
/// The text string to be drawn
#[inline]
fn set_text(&mut self, val: &str) {
extern_container_arg!(nofail mut val);
let ret = unsafe { sys::cv_gapi_wip_draw_Text_setPropText_string(self.as_raw_mut_Text(), val.opencv_as_extern_mut()) };
ret
}
/// The bottom-left corner of the text string in the image
#[inline]
fn set_org(&mut self, val: core::Point) {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_setPropOrg_Point(self.as_raw_mut_Text(), val.opencv_as_extern()) };
ret
}
/// The font type, see #HersheyFonts
#[inline]
fn set_ff(&mut self, val: i32) {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_setPropFf_int(self.as_raw_mut_Text(), val) };
ret
}
/// The font scale factor that is multiplied by the font-specific base size
#[inline]
fn set_fs(&mut self, val: f64) {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_setPropFs_double(self.as_raw_mut_Text(), val) };
ret
}
/// The text color
#[inline]
fn set_color(&mut self, val: core::Scalar) {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_setPropColor_Scalar(self.as_raw_mut_Text(), val.opencv_as_extern()) };
ret
}
/// The thickness of the lines used to draw a text
#[inline]
fn set_thick(&mut self, val: i32) {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_setPropThick_int(self.as_raw_mut_Text(), val) };
ret
}
/// The line type. See #LineTypes
#[inline]
fn set_lt(&mut self, val: i32) {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_setPropLt_int(self.as_raw_mut_Text(), val) };
ret
}
/// When true, the image data origin is at the bottom-left corner. Otherwise, it is at the top-left corner
#[inline]
fn set_bottom_left_origin(&mut self, val: bool) {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_setPropBottom_left_origin_bool(self.as_raw_mut_Text(), val) };
ret
}
}
/// * This structure represents a text string to draw.
/// *
/// * Parameters match cv::putText().
pub struct Text {
ptr: *mut c_void
}
opencv_type_boxed! { Text }
impl Drop for Text {
fn drop(&mut self) {
extern "C" { fn cv_Text_delete(instance: *mut c_void); }
unsafe { cv_Text_delete(self.as_raw_mut_Text()) };
}
}
unsafe impl Send for Text {}
impl crate::gapi::TextTraitConst for Text {
#[inline] fn as_raw_Text(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::TextTrait for Text {
#[inline] fn as_raw_mut_Text(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl Text {
/// Text constructor
///
/// ## Parameters
/// * text_: The text string to be drawn
/// * org_: The bottom-left corner of the text string in the image
/// * ff_: The font type, see #HersheyFonts
/// * fs_: The font scale factor that is multiplied by the font-specific base size
/// * color_: The text color
/// * thick_: The thickness of the lines used to draw a text
/// * lt_: The line type. See #LineTypes
/// * bottom_left_origin_: When true, the image data origin is at the bottom-left corner. Otherwise, it is at the top-left corner
///
/// ## C++ default parameters
/// * thick_: 1
/// * lt_: 8
/// * bottom_left_origin_: false
#[inline]
pub fn new(text_: &str, org_: core::Point, ff_: i32, fs_: f64, color_: core::Scalar, thick_: i32, lt_: i32, bottom_left_origin_: bool) -> Result<crate::gapi::Text> {
extern_container_arg!(text_);
return_send!(via ocvrs_return);
unsafe { sys::cv_gapi_wip_draw_Text_Text_const_stringR_const_PointR_int_double_const_ScalarR_int_int_bool(text_.opencv_as_extern(), &org_, ff_, fs_, &color_, thick_, lt_, bottom_left_origin_, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::Text::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn default() -> crate::gapi::Text {
let ret = unsafe { sys::cv_gapi_wip_draw_Text_Text() };
let ret = unsafe { crate::gapi::Text::opencv_from_extern(ret) };
ret
}
}
impl Default for Text {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}
/// Constant methods for [crate::gapi::any]
pub trait anyTraitConst {
fn as_raw_any(&self) -> *const c_void;
}
/// Mutable methods for [crate::gapi::any]
pub trait anyTrait: crate::gapi::anyTraitConst {
fn as_raw_mut_any(&mut self) -> *mut c_void;
}
pub struct any {
ptr: *mut c_void
}
opencv_type_boxed! { any }
impl Drop for any {
fn drop(&mut self) {
extern "C" { fn cv_any_delete(instance: *mut c_void); }
unsafe { cv_any_delete(self.as_raw_mut_any()) };
}
}
unsafe impl Send for any {}
impl crate::gapi::anyTraitConst for any {
#[inline] fn as_raw_any(&self) -> *const c_void { self.as_raw() }
}
impl crate::gapi::anyTrait for any {
#[inline] fn as_raw_mut_any(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl any {
#[inline]
pub fn copy(src: &crate::gapi::any) -> Result<crate::gapi::any> {
return_send!(via ocvrs_return);
unsafe { sys::cv_util_any_any_const_anyR(src.as_raw_any(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::any::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn copy_mut(src: &mut crate::gapi::any) -> Result<crate::gapi::any> {
return_send!(via ocvrs_return);
unsafe { sys::cv_util_any_any_anyR(src.as_raw_mut_any(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::gapi::any::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn default() -> crate::gapi::any {
let ret = unsafe { sys::cv_util_any_any() };
let ret = unsafe { crate::gapi::any::opencv_from_extern(ret) };
ret
}
#[inline]
pub fn copy_mut_1(mut unnamed: crate::gapi::any) -> crate::gapi::any {
let ret = unsafe { sys::cv_util_any_any_anyRR(unnamed.as_raw_mut_any()) };
let ret = unsafe { crate::gapi::any::opencv_from_extern(ret) };
ret
}
}
impl Default for any {
#[inline]
/// Forwards to infallible Self::default()
fn default() -> Self {
Self::default()
}
}