pub mod alphamat {
	//! # Alpha Matting
	//! Alpha matting is used to extract a foreground object with soft boundaries from a background image.
	//!
	//! This module is dedicated to computing alpha matte of objects in images from a given input image and a greyscale trimap image that contains information about the foreground, background and unknown pixels. The unknown pixels are assumed to be a combination of foreground and background pixels. The algorithm uses a combination of multiple carefully defined pixels affinities to estimate the opacity of the foreground pixels in the unkown region.
	//!
	//! The implementation is based on [aksoy2017designing](https://docs.opencv.org/4.13.0/d0/de3/citelist.html#CITEREF_aksoy2017designing).
	//!
	//! This module was developed by Muskaan Kularia and Sunita Nayak as a project
	//! for Google Summer of Code 2019 (GSoC 19).
	use crate::mod_prelude::*;
	use crate::{core, sys, types};
	pub mod prelude {
	}

	/// Compute alpha matte of an object in an image
	/// ## Parameters
	/// * image: Input RGB image
	/// * tmap: Input greyscale trimap image
	/// * result: Output alpha matte image
	///
	/// The function infoFlow performs alpha matting on a RGB image using a greyscale trimap image, and outputs a greyscale alpha matte image. The output alpha matte can be used to softly extract the foreground object from a background image. Examples can be found in the samples directory.
	#[inline]
	pub fn info_flow(image: &impl ToInputArray, tmap: &impl ToInputArray, result: &mut impl ToOutputArray) -> Result<()> {
		input_array_arg!(image);
		input_array_arg!(tmap);
		output_array_arg!(result);
		return_send!(via ocvrs_return);
		unsafe { sys::cv_alphamat_infoFlow_const__InputArrayR_const__InputArrayR_const__OutputArrayR(image.as_raw__InputArray(), tmap.as_raw__InputArray(), result.as_raw__OutputArray(), ocvrs_return.as_mut_ptr()) };
		return_receive!(ocvrs_return => ret);
		let ret = ret.into_result()?;
		Ok(ret)
	}

}
