pub struct DISK { /* private fields */ }Expand description
DISK feature detector and descriptor, based on a DNN model.
DISK (Deep Image Structure and Keypoints) is a learned local-feature pipeline that produces keypoints and 128-D L2-normalized descriptors via a single forward pass through a fully convolutional network. This class wraps an ONNX export of the pre-trained DISK model through cv::dnn::Net and exposes it under the standard cv::Feature2D interface so it can be used as a drop-in alternative to SIFT/ORB.
The class assumes the ONNX model has a single input named image taking an N×3×H×W float32
tensor in [0, 1] (RGB channel order) and three outputs named keypoints (N×2), scores (N)
and descriptors (N×128).
Implementations§
Source§impl DISK
impl DISK
Sourcepub fn create(
model_path: &str,
max_keypoints: i32,
score_threshold: f32,
image_size: Size,
backend_id: i32,
target_id: i32,
) -> Result<Ptr<DISK>>
pub fn create( model_path: &str, max_keypoints: i32, score_threshold: f32, image_size: Size, backend_id: i32, target_id: i32, ) -> Result<Ptr<DISK>>
Creates a DISK detector.
§Parameters
- modelPath: Path to the DISK ONNX model.
- maxKeypoints: Maximum number of keypoints to return per image. The strongest responses (by network score) are kept; -1 keeps all detections.
- scoreThreshold: Discard keypoints with network score strictly below this value.
- imageSize: Target input size (width, height) fed to the network. Use Size() (the default) to fall back to the network’s expected fixed input shape of 1024x1024. When overriding, both dimensions must be positive multiples of 16, since DISK downsamples by a factor of 16.
- backendId: DNN backend identifier (see cv::dnn::Backend); 0 = DNN_BACKEND_DEFAULT.
- targetId: DNN target identifier (see cv::dnn::Target); 0 = DNN_TARGET_CPU.
§C++ default parameters
- max_keypoints: -1
- score_threshold: 0.0f
- image_size: Size()
- backend_id: 0
- target_id: 0
Sourcepub fn create_def(model_path: &str) -> Result<Ptr<DISK>>
pub fn create_def(model_path: &str) -> Result<Ptr<DISK>>
Creates a DISK detector.
§Parameters
- modelPath: Path to the DISK ONNX model.
- maxKeypoints: Maximum number of keypoints to return per image. The strongest responses (by network score) are kept; -1 keeps all detections.
- scoreThreshold: Discard keypoints with network score strictly below this value.
- imageSize: Target input size (width, height) fed to the network. Use Size() (the default) to fall back to the network’s expected fixed input shape of 1024x1024. When overriding, both dimensions must be positive multiples of 16, since DISK downsamples by a factor of 16.
- backendId: DNN backend identifier (see cv::dnn::Backend); 0 = DNN_BACKEND_DEFAULT.
- targetId: DNN target identifier (see cv::dnn::Target); 0 = DNN_TARGET_CPU.
§Note
This alternative version of DISK::create function uses the following default values for its arguments:
- max_keypoints: -1
- score_threshold: 0.0f
- image_size: Size()
- backend_id: 0
- target_id: 0
Sourcepub fn create_from_memory(
buffer_model: &Vector<u8>,
max_keypoints: i32,
score_threshold: f32,
image_size: Size,
backend_id: i32,
target_id: i32,
) -> Result<Ptr<DISK>>
pub fn create_from_memory( buffer_model: &Vector<u8>, max_keypoints: i32, score_threshold: f32, image_size: Size, backend_id: i32, target_id: i32, ) -> Result<Ptr<DISK>>
Creates a DISK detector from an in-memory model buffer.
This overload loads the DISK ONNX model from a buffer instead of a file on disk. It is intended for cases where the model is read from application resources (for example Android assets) and is not available as a path on the filesystem.
§Parameters
- bufferModel: A buffer containing the contents of the DISK ONNX model.
- maxKeypoints: Maximum number of keypoints to return per image. The strongest responses (by network score) are kept; -1 keeps all detections.
- scoreThreshold: Discard keypoints with network score strictly below this value.
- imageSize: Target input size (width, height) fed to the network. Use Size() (the default) to fall back to the network’s expected fixed input shape of 1024x1024. When overriding, both dimensions must be positive multiples of 16, since DISK downsamples by a factor of 16.
- backendId: DNN backend identifier (see cv::dnn::Backend); 0 = DNN_BACKEND_DEFAULT.
- targetId: DNN target identifier (see cv::dnn::Target); 0 = DNN_TARGET_CPU.
Note: In C++ this is an overload of [create]. The Python/Java/Objective-C bindings expose
it as createFromMemory, because Objective-C selectors are not disambiguated by argument
type and would otherwise clash with the file-path [create].
§C++ default parameters
- max_keypoints: -1
- score_threshold: 0.0f
- image_size: Size()
- backend_id: 0
- target_id: 0
Sourcepub fn create_from_memory_def(buffer_model: &Vector<u8>) -> Result<Ptr<DISK>>
pub fn create_from_memory_def(buffer_model: &Vector<u8>) -> Result<Ptr<DISK>>
Creates a DISK detector from an in-memory model buffer.
This overload loads the DISK ONNX model from a buffer instead of a file on disk. It is intended for cases where the model is read from application resources (for example Android assets) and is not available as a path on the filesystem.
§Parameters
- bufferModel: A buffer containing the contents of the DISK ONNX model.
- maxKeypoints: Maximum number of keypoints to return per image. The strongest responses (by network score) are kept; -1 keeps all detections.
- scoreThreshold: Discard keypoints with network score strictly below this value.
- imageSize: Target input size (width, height) fed to the network. Use Size() (the default) to fall back to the network’s expected fixed input shape of 1024x1024. When overriding, both dimensions must be positive multiples of 16, since DISK downsamples by a factor of 16.
- backendId: DNN backend identifier (see cv::dnn::Backend); 0 = DNN_BACKEND_DEFAULT.
- targetId: DNN target identifier (see cv::dnn::Target); 0 = DNN_TARGET_CPU.
Note: In C++ this is an overload of [create]. The Python/Java/Objective-C bindings expose
it as createFromMemory, because Objective-C selectors are not disambiguated by argument
type and would otherwise clash with the file-path [create].
§Note
This alternative version of DISK::create_from_memory function uses the following default values for its arguments:
- max_keypoints: -1
- score_threshold: 0.0f
- image_size: Size()
- backend_id: 0
- target_id: 0
Trait Implementations§
Source§impl AlgorithmTrait for DISK
impl AlgorithmTrait for DISK
Source§impl AlgorithmTraitConst for DISK
impl AlgorithmTraitConst for DISK
fn as_raw_Algorithm(&self) -> *const c_void
Source§fn write(&self, fs: &mut impl FileStorageTrait) -> Result<()>
fn write(&self, fs: &mut impl FileStorageTrait) -> Result<()>
Source§fn write_1(&self, fs: &mut impl FileStorageTrait, name: &str) -> Result<()>
fn write_1(&self, fs: &mut impl FileStorageTrait, name: &str) -> Result<()>
Source§fn empty(&self) -> Result<bool>
fn empty(&self) -> Result<bool>
Source§fn save(&self, filename: &str) -> Result<()>
fn save(&self, filename: &str) -> Result<()>
Source§fn get_default_name(&self) -> Result<String>
fn get_default_name(&self) -> Result<String>
Source§impl Boxed for DISK
impl Boxed for DISK
Source§unsafe fn from_raw(ptr: <DISK as OpenCVFromExtern>::ExternReceive) -> Self
unsafe fn from_raw(ptr: <DISK as OpenCVFromExtern>::ExternReceive) -> Self
Source§fn into_raw(self) -> <DISK as OpenCVTypeExternContainer>::ExternSendMut
fn into_raw(self) -> <DISK as OpenCVTypeExternContainer>::ExternSendMut
Source§fn as_raw(&self) -> <DISK as OpenCVTypeExternContainer>::ExternSend
fn as_raw(&self) -> <DISK as OpenCVTypeExternContainer>::ExternSend
Source§fn as_raw_mut(&mut self) -> <DISK as OpenCVTypeExternContainer>::ExternSendMut
fn as_raw_mut(&mut self) -> <DISK as OpenCVTypeExternContainer>::ExternSendMut
Source§impl DISKTraitConst for DISK
impl DISKTraitConst for DISK
fn as_raw_DISK(&self) -> *const c_void
fn get_max_keypoints(&self) -> Result<i32>
fn get_score_threshold(&self) -> Result<f32>
fn get_image_size(&self) -> Result<Size>
fn get_default_name(&self) -> Result<String>
Source§impl Feature2DTrait for DISK
impl Feature2DTrait for DISK
fn as_raw_mut_Feature2D(&mut self) -> *mut c_void
Source§fn detect(
&mut self,
image: &impl ToInputArray,
keypoints: &mut Vector<KeyPoint>,
mask: &impl ToInputArray,
) -> Result<()>
fn detect( &mut self, image: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, mask: &impl ToInputArray, ) -> Result<()>
Source§fn detect_def(
&mut self,
image: &impl ToInputArray,
keypoints: &mut Vector<KeyPoint>,
) -> Result<()>
fn detect_def( &mut self, image: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, ) -> Result<()>
Source§fn detect_multiple(
&mut self,
images: &impl ToInputArray,
keypoints: &mut Vector<Vector<KeyPoint>>,
masks: &impl ToInputArray,
) -> Result<()>
fn detect_multiple( &mut self, images: &impl ToInputArray, keypoints: &mut Vector<Vector<KeyPoint>>, masks: &impl ToInputArray, ) -> Result<()>
Source§fn detect_multiple_def(
&mut self,
images: &impl ToInputArray,
keypoints: &mut Vector<Vector<KeyPoint>>,
) -> Result<()>
fn detect_multiple_def( &mut self, images: &impl ToInputArray, keypoints: &mut Vector<Vector<KeyPoint>>, ) -> Result<()>
Source§fn compute(
&mut self,
image: &impl ToInputArray,
keypoints: &mut Vector<KeyPoint>,
descriptors: &mut impl ToOutputArray,
) -> Result<()>
fn compute( &mut self, image: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, descriptors: &mut impl ToOutputArray, ) -> Result<()>
Source§fn compute_multiple(
&mut self,
images: &impl ToInputArray,
keypoints: &mut Vector<Vector<KeyPoint>>,
descriptors: &mut impl ToOutputArray,
) -> Result<()>
fn compute_multiple( &mut self, images: &impl ToInputArray, keypoints: &mut Vector<Vector<KeyPoint>>, descriptors: &mut impl ToOutputArray, ) -> Result<()>
Source§fn detect_and_compute(
&mut self,
image: &impl ToInputArray,
mask: &impl ToInputArray,
keypoints: &mut Vector<KeyPoint>,
descriptors: &mut impl ToOutputArray,
use_provided_keypoints: bool,
) -> Result<()>
fn detect_and_compute( &mut self, image: &impl ToInputArray, mask: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, descriptors: &mut impl ToOutputArray, use_provided_keypoints: bool, ) -> Result<()>
Source§fn detect_and_compute_def(
&mut self,
image: &impl ToInputArray,
mask: &impl ToInputArray,
keypoints: &mut Vector<KeyPoint>,
descriptors: &mut impl ToOutputArray,
) -> Result<()>
fn detect_and_compute_def( &mut self, image: &impl ToInputArray, mask: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, descriptors: &mut impl ToOutputArray, ) -> Result<()>
fn read(&mut self, file_name: &str) -> Result<()>
fn read_from_node(&mut self, unnamed: &impl FileNodeTraitConst) -> Result<()>
Source§impl Feature2DTraitConst for DISK
impl Feature2DTraitConst for DISK
fn as_raw_Feature2D(&self) -> *const c_void
fn descriptor_size(&self) -> Result<i32>
fn descriptor_type(&self) -> Result<i32>
fn default_norm(&self) -> Result<i32>
fn write(&self, file_name: &str) -> Result<()>
fn write_to_storage(&self, unnamed: &mut impl FileStorageTrait) -> Result<()>
fn get_default_name(&self) -> Result<String>
fn write_to_storage_with_name( &self, fs: &mut impl FileStorageTrait, name: &str, ) -> Result<()>
impl Send for DISK
Auto Trait Implementations§
impl !Sync for DISK
impl Freeze for DISK
impl RefUnwindSafe for DISK
impl Unpin for DISK
impl UnsafeUnpin for DISK
impl UnwindSafe for DISK
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<Mat> ModifyInplace for Matwhere
Mat: Boxed,
impl<Mat> ModifyInplace for Matwhere
Mat: Boxed,
Source§unsafe fn modify_inplace<Res>(
&mut self,
f: impl FnOnce(&Mat, &mut Mat) -> Res,
) -> Res
unsafe fn modify_inplace<Res>( &mut self, f: impl FnOnce(&Mat, &mut Mat) -> Res, ) -> Res
Mat or another similar object. By passing
a mutable reference to the Mat to this function your closure will get called with the read reference and a write references
to the same Mat. This is unsafe in a general case as it leads to having non-exclusive mutable access to the internal data,
but it can be useful for some performance sensitive operations. One example of an OpenCV function that allows such in-place
modification is imgproc::threshold. Read more