#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum DnnBackend {
Default,
OpenCV,
InferenceEngine,
Halide,
Cuda,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum DnnTarget {
Cpu,
OpenCL,
OpenCLFp16,
Myriad,
Fpga,
Cuda,
CudaFp16,
Hddl,
}
impl From<DnnBackend> for i32 {
fn from(backend: DnnBackend) -> i32 {
use opencv::dnn;
match backend {
DnnBackend::Default => dnn::DNN_BACKEND_DEFAULT,
DnnBackend::OpenCV => dnn::DNN_BACKEND_OPENCV,
DnnBackend::InferenceEngine => dnn::DNN_BACKEND_INFERENCE_ENGINE,
DnnBackend::Halide => dnn::DNN_BACKEND_HALIDE,
DnnBackend::Cuda => dnn::DNN_BACKEND_CUDA,
}
}
}
impl From<DnnTarget> for i32 {
fn from(target: DnnTarget) -> i32 {
use opencv::dnn;
match target {
DnnTarget::Cpu => dnn::DNN_TARGET_CPU,
DnnTarget::OpenCL => dnn::DNN_TARGET_OPENCL,
DnnTarget::OpenCLFp16 => dnn::DNN_TARGET_OPENCL_FP16,
DnnTarget::Myriad => dnn::DNN_TARGET_MYRIAD,
DnnTarget::Fpga => dnn::DNN_TARGET_FPGA,
DnnTarget::Cuda => dnn::DNN_TARGET_CUDA,
DnnTarget::CudaFp16 => dnn::DNN_TARGET_CUDA_FP16,
DnnTarget::Hddl => dnn::DNN_TARGET_HDDL,
}
}
}
impl Default for DnnBackend {
fn default() -> Self {
DnnBackend::OpenCV
}
}
impl Default for DnnTarget {
fn default() -> Self {
DnnTarget::Cpu
}
}