use std::os::raw::{c_char, c_void};
use libc::{ptrdiff_t, size_t};
use crate::{Error, Result, core, sys, types};
use crate::core::{_InputArray, _OutputArray};
pub const ITERATIVE: i32 = 3;
pub const LINEAR: i32 = 1;
pub const MULTI_STEP: i32 = 2;
pub const ONE_STEP: i32 = 1;
pub const SINUS: i32 = 2;
pub fn ft02_d_components(matrix: &dyn core::ToInputArray, kernel: &dyn core::ToInputArray, components: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(matrix);
input_array_arg!(kernel);
output_array_arg!(components);
unsafe { sys::cv_ft_FT02D_components__InputArray__InputArray__OutputArray(matrix.as_raw__InputArray(), kernel.as_raw__InputArray(), components.as_raw__OutputArray()) }.into_result()
}
pub fn ft02_d_components_1(matrix: &dyn core::ToInputArray, kernel: &dyn core::ToInputArray, components: &mut dyn core::ToOutputArray, mask: &dyn core::ToInputArray) -> Result<()> {
input_array_arg!(matrix);
input_array_arg!(kernel);
output_array_arg!(components);
input_array_arg!(mask);
unsafe { sys::cv_ft_FT02D_components__InputArray__InputArray__OutputArray__InputArray(matrix.as_raw__InputArray(), kernel.as_raw__InputArray(), components.as_raw__OutputArray(), mask.as_raw__InputArray()) }.into_result()
}
pub fn ft02_d_inverse_ft(components: &dyn core::ToInputArray, kernel: &dyn core::ToInputArray, output: &mut dyn core::ToOutputArray, width: i32, height: i32) -> Result<()> {
input_array_arg!(components);
input_array_arg!(kernel);
output_array_arg!(output);
unsafe { sys::cv_ft_FT02D_inverseFT__InputArray__InputArray__OutputArray_int_int(components.as_raw__InputArray(), kernel.as_raw__InputArray(), output.as_raw__OutputArray(), width, height) }.into_result()
}
pub fn ft02_d_iteration(matrix: &dyn core::ToInputArray, kernel: &dyn core::ToInputArray, output: &mut dyn core::ToOutputArray, mask: &dyn core::ToInputArray, mask_output: &mut dyn core::ToOutputArray, first_stop: bool) -> Result<i32> {
input_array_arg!(matrix);
input_array_arg!(kernel);
output_array_arg!(output);
input_array_arg!(mask);
output_array_arg!(mask_output);
unsafe { sys::cv_ft_FT02D_iteration__InputArray__InputArray__OutputArray__InputArray__OutputArray_bool(matrix.as_raw__InputArray(), kernel.as_raw__InputArray(), output.as_raw__OutputArray(), mask.as_raw__InputArray(), mask_output.as_raw__OutputArray(), first_stop) }.into_result()
}
pub fn ft02_d_process(matrix: &dyn core::ToInputArray, kernel: &dyn core::ToInputArray, output: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(matrix);
input_array_arg!(kernel);
output_array_arg!(output);
unsafe { sys::cv_ft_FT02D_process__InputArray__InputArray__OutputArray(matrix.as_raw__InputArray(), kernel.as_raw__InputArray(), output.as_raw__OutputArray()) }.into_result()
}
pub fn ft02_d_process_1(matrix: &dyn core::ToInputArray, kernel: &dyn core::ToInputArray, output: &mut dyn core::ToOutputArray, mask: &dyn core::ToInputArray) -> Result<()> {
input_array_arg!(matrix);
input_array_arg!(kernel);
output_array_arg!(output);
input_array_arg!(mask);
unsafe { sys::cv_ft_FT02D_process__InputArray__InputArray__OutputArray__InputArray(matrix.as_raw__InputArray(), kernel.as_raw__InputArray(), output.as_raw__OutputArray(), mask.as_raw__InputArray()) }.into_result()
}
pub fn create_kernel(a: &dyn core::ToInputArray, b: &dyn core::ToInputArray, kernel: &mut dyn core::ToOutputArray, chn: i32) -> Result<()> {
input_array_arg!(a);
input_array_arg!(b);
output_array_arg!(kernel);
unsafe { sys::cv_ft_createKernel__InputArray__InputArray__OutputArray_int(a.as_raw__InputArray(), b.as_raw__InputArray(), kernel.as_raw__OutputArray(), chn) }.into_result()
}
pub fn create_kernel_1(function: i32, radius: i32, kernel: &mut dyn core::ToOutputArray, chn: i32) -> Result<()> {
output_array_arg!(kernel);
unsafe { sys::cv_ft_createKernel_int_int__OutputArray_int(function, radius, kernel.as_raw__OutputArray(), chn) }.into_result()
}
pub fn filter(image: &dyn core::ToInputArray, kernel: &dyn core::ToInputArray, output: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(image);
input_array_arg!(kernel);
output_array_arg!(output);
unsafe { sys::cv_ft_filter__InputArray__InputArray__OutputArray(image.as_raw__InputArray(), kernel.as_raw__InputArray(), output.as_raw__OutputArray()) }.into_result()
}
pub fn inpaint(image: &dyn core::ToInputArray, mask: &dyn core::ToInputArray, output: &mut dyn core::ToOutputArray, radius: i32, function: i32, algorithm: i32) -> Result<()> {
input_array_arg!(image);
input_array_arg!(mask);
output_array_arg!(output);
unsafe { sys::cv_ft_inpaint__InputArray__InputArray__OutputArray_int_int_int(image.as_raw__InputArray(), mask.as_raw__InputArray(), output.as_raw__OutputArray(), radius, function, algorithm) }.into_result()
}