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 fn create_frame_source_camera(device_id: i32) -> Result<types::PtrOfFrameSource> {
unsafe { sys::cv_superres_createFrameSource_Camera_int(device_id) }.into_result().map(|ptr| types::PtrOfFrameSource { ptr })
}
pub fn create_frame_source_empty() -> Result<types::PtrOfFrameSource> {
unsafe { sys::cv_superres_createFrameSource_Empty() }.into_result().map(|ptr| types::PtrOfFrameSource { ptr })
}
pub fn create_frame_source_video_cuda(file_name: &str) -> Result<types::PtrOfFrameSource> {
string_arg!(file_name);
unsafe { sys::cv_superres_createFrameSource_Video_CUDA_String(file_name.as_ptr()) }.into_result().map(|ptr| types::PtrOfFrameSource { ptr })
}
pub fn create_frame_source_video(file_name: &str) -> Result<types::PtrOfFrameSource> {
string_arg!(file_name);
unsafe { sys::cv_superres_createFrameSource_Video_String(file_name.as_ptr()) }.into_result().map(|ptr| types::PtrOfFrameSource { ptr })
}
pub fn create_super_resolution_btvl1() -> Result<types::PtrOfSuperResolution> {
unsafe { sys::cv_superres_createSuperResolution_BTVL1() }.into_result().map(|ptr| types::PtrOfSuperResolution { ptr })
}
pub fn create_super_resolution_btvl1_cuda() -> Result<types::PtrOfSuperResolution> {
unsafe { sys::cv_superres_createSuperResolution_BTVL1_CUDA() }.into_result().map(|ptr| types::PtrOfSuperResolution { ptr })
}
pub trait FrameSource {
#[inline(always)] fn as_raw_FrameSource(&self) -> *mut c_void;
fn next_frame(&mut self, frame: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(frame);
unsafe { sys::cv_superres_FrameSource_nextFrame__OutputArray(self.as_raw_FrameSource(), frame.as_raw__OutputArray()) }.into_result()
}
fn reset(&mut self) -> Result<()> {
unsafe { sys::cv_superres_FrameSource_reset(self.as_raw_FrameSource()) }.into_result()
}
}
pub trait SuperResolution: core::Algorithm + crate::superres::FrameSource {
#[inline(always)] fn as_raw_SuperResolution(&self) -> *mut c_void;
fn set_input(&mut self, frame_source: &types::PtrOfFrameSource) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setInput_PtrOfFrameSource(self.as_raw_SuperResolution(), frame_source.as_raw_PtrOfFrameSource()) }.into_result()
}
fn next_frame(&mut self, frame: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(frame);
unsafe { sys::cv_superres_SuperResolution_nextFrame__OutputArray(self.as_raw_SuperResolution(), frame.as_raw__OutputArray()) }.into_result()
}
fn reset(&mut self) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_reset(self.as_raw_SuperResolution()) }.into_result()
}
fn collect_garbage(&mut self) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_collectGarbage(self.as_raw_SuperResolution()) }.into_result()
}
fn get_scale(&self) -> Result<i32> {
unsafe { sys::cv_superres_SuperResolution_getScale_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_scale(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setScale_int(self.as_raw_SuperResolution(), val) }.into_result()
}
fn get_iterations(&self) -> Result<i32> {
unsafe { sys::cv_superres_SuperResolution_getIterations_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_iterations(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setIterations_int(self.as_raw_SuperResolution(), val) }.into_result()
}
fn get_tau(&self) -> Result<f64> {
unsafe { sys::cv_superres_SuperResolution_getTau_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_tau(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setTau_double(self.as_raw_SuperResolution(), val) }.into_result()
}
fn get_labmda(&self) -> Result<f64> {
unsafe { sys::cv_superres_SuperResolution_getLabmda_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_labmda(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setLabmda_double(self.as_raw_SuperResolution(), val) }.into_result()
}
fn get_alpha(&self) -> Result<f64> {
unsafe { sys::cv_superres_SuperResolution_getAlpha_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_alpha(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setAlpha_double(self.as_raw_SuperResolution(), val) }.into_result()
}
fn get_kernel_size(&self) -> Result<i32> {
unsafe { sys::cv_superres_SuperResolution_getKernelSize_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_kernel_size(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setKernelSize_int(self.as_raw_SuperResolution(), val) }.into_result()
}
fn get_blur_kernel_size(&self) -> Result<i32> {
unsafe { sys::cv_superres_SuperResolution_getBlurKernelSize_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_blur_kernel_size(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setBlurKernelSize_int(self.as_raw_SuperResolution(), val) }.into_result()
}
fn get_blur_sigma(&self) -> Result<f64> {
unsafe { sys::cv_superres_SuperResolution_getBlurSigma_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_blur_sigma(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setBlurSigma_double(self.as_raw_SuperResolution(), val) }.into_result()
}
fn get_temporal_area_radius(&self) -> Result<i32> {
unsafe { sys::cv_superres_SuperResolution_getTemporalAreaRadius_const(self.as_raw_SuperResolution()) }.into_result()
}
fn set_temporal_area_radius(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_superres_SuperResolution_setTemporalAreaRadius_int(self.as_raw_SuperResolution(), val) }.into_result()
}
}