Health/Assets/OpenCVForUnity/org/opencv/features2d/AffineFeature.cs

213 lines
8.1 KiB
C#

using OpenCVForUnity.CoreModule;
using OpenCVForUnity.UtilsModule;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace OpenCVForUnity.Features2dModule
{
// C++: class AffineFeature
/**
* Class for implementing the wrapper which makes detectors and extractors to be affine invariant,
* described as ASIFT in CITE: YM11 .
*/
public class AffineFeature : Feature2D
{
protected override void Dispose(bool disposing)
{
try
{
if (disposing)
{
}
if (IsEnabledDispose)
{
if (nativeObj != IntPtr.Zero)
features2d_AffineFeature_delete(nativeObj);
nativeObj = IntPtr.Zero;
}
}
finally
{
base.Dispose(disposing);
}
}
protected internal AffineFeature(IntPtr addr) : base(addr) { }
// internal usage only
public static new AffineFeature __fromPtr__(IntPtr addr) { return new AffineFeature(addr); }
//
// C++: static Ptr_AffineFeature cv::AffineFeature::create(Ptr_Feature2D backend, int maxTilt = 5, int minTilt = 0, float tiltStep = 1.4142135623730951f, float rotateStepBase = 72)
//
/**
* param backend The detector/extractor you want to use as backend.
* param maxTilt The highest power index of tilt factor. 5 is used in the paper as tilt sampling range n.
* param minTilt The lowest power index of tilt factor. 0 is used in the paper.
* param tiltStep Tilt sampling step \(\delta_t\) in Algorithm 1 in the paper.
* param rotateStepBase Rotation sampling step factor b in Algorithm 1 in the paper.
* return automatically generated
*/
public static AffineFeature create(Feature2D backend, int maxTilt, int minTilt, float tiltStep, float rotateStepBase)
{
if (backend != null) backend.ThrowIfDisposed();
return AffineFeature.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(features2d_AffineFeature_create_10(backend.getNativeObjAddr(), maxTilt, minTilt, tiltStep, rotateStepBase)));
}
/**
* param backend The detector/extractor you want to use as backend.
* param maxTilt The highest power index of tilt factor. 5 is used in the paper as tilt sampling range n.
* param minTilt The lowest power index of tilt factor. 0 is used in the paper.
* param tiltStep Tilt sampling step \(\delta_t\) in Algorithm 1 in the paper.
* return automatically generated
*/
public static AffineFeature create(Feature2D backend, int maxTilt, int minTilt, float tiltStep)
{
if (backend != null) backend.ThrowIfDisposed();
return AffineFeature.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(features2d_AffineFeature_create_11(backend.getNativeObjAddr(), maxTilt, minTilt, tiltStep)));
}
/**
* param backend The detector/extractor you want to use as backend.
* param maxTilt The highest power index of tilt factor. 5 is used in the paper as tilt sampling range n.
* param minTilt The lowest power index of tilt factor. 0 is used in the paper.
* return automatically generated
*/
public static AffineFeature create(Feature2D backend, int maxTilt, int minTilt)
{
if (backend != null) backend.ThrowIfDisposed();
return AffineFeature.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(features2d_AffineFeature_create_12(backend.getNativeObjAddr(), maxTilt, minTilt)));
}
/**
* param backend The detector/extractor you want to use as backend.
* param maxTilt The highest power index of tilt factor. 5 is used in the paper as tilt sampling range n.
* return automatically generated
*/
public static AffineFeature create(Feature2D backend, int maxTilt)
{
if (backend != null) backend.ThrowIfDisposed();
return AffineFeature.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(features2d_AffineFeature_create_13(backend.getNativeObjAddr(), maxTilt)));
}
/**
* param backend The detector/extractor you want to use as backend.
* return automatically generated
*/
public static AffineFeature create(Feature2D backend)
{
if (backend != null) backend.ThrowIfDisposed();
return AffineFeature.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(features2d_AffineFeature_create_14(backend.getNativeObjAddr())));
}
//
// C++: void cv::AffineFeature::setViewParams(vector_float tilts, vector_float rolls)
//
public void setViewParams(MatOfFloat tilts, MatOfFloat rolls)
{
ThrowIfDisposed();
if (tilts != null) tilts.ThrowIfDisposed();
if (rolls != null) rolls.ThrowIfDisposed();
Mat tilts_mat = tilts;
Mat rolls_mat = rolls;
features2d_AffineFeature_setViewParams_10(nativeObj, tilts_mat.nativeObj, rolls_mat.nativeObj);
}
//
// C++: void cv::AffineFeature::getViewParams(vector_float tilts, vector_float rolls)
//
public void getViewParams(MatOfFloat tilts, MatOfFloat rolls)
{
ThrowIfDisposed();
if (tilts != null) tilts.ThrowIfDisposed();
if (rolls != null) rolls.ThrowIfDisposed();
Mat tilts_mat = tilts;
Mat rolls_mat = rolls;
features2d_AffineFeature_getViewParams_10(nativeObj, tilts_mat.nativeObj, rolls_mat.nativeObj);
}
//
// C++: String cv::AffineFeature::getDefaultName()
//
public override string getDefaultName()
{
ThrowIfDisposed();
string retVal = Marshal.PtrToStringAnsi(DisposableObject.ThrowIfNullIntPtr(features2d_AffineFeature_getDefaultName_10(nativeObj)));
return retVal;
}
#if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
const string LIBNAME = "__Internal";
#else
const string LIBNAME = "opencvforunity";
#endif
// C++: static Ptr_AffineFeature cv::AffineFeature::create(Ptr_Feature2D backend, int maxTilt = 5, int minTilt = 0, float tiltStep = 1.4142135623730951f, float rotateStepBase = 72)
[DllImport(LIBNAME)]
private static extern IntPtr features2d_AffineFeature_create_10(IntPtr backend_nativeObj, int maxTilt, int minTilt, float tiltStep, float rotateStepBase);
[DllImport(LIBNAME)]
private static extern IntPtr features2d_AffineFeature_create_11(IntPtr backend_nativeObj, int maxTilt, int minTilt, float tiltStep);
[DllImport(LIBNAME)]
private static extern IntPtr features2d_AffineFeature_create_12(IntPtr backend_nativeObj, int maxTilt, int minTilt);
[DllImport(LIBNAME)]
private static extern IntPtr features2d_AffineFeature_create_13(IntPtr backend_nativeObj, int maxTilt);
[DllImport(LIBNAME)]
private static extern IntPtr features2d_AffineFeature_create_14(IntPtr backend_nativeObj);
// C++: void cv::AffineFeature::setViewParams(vector_float tilts, vector_float rolls)
[DllImport(LIBNAME)]
private static extern void features2d_AffineFeature_setViewParams_10(IntPtr nativeObj, IntPtr tilts_mat_nativeObj, IntPtr rolls_mat_nativeObj);
// C++: void cv::AffineFeature::getViewParams(vector_float tilts, vector_float rolls)
[DllImport(LIBNAME)]
private static extern void features2d_AffineFeature_getViewParams_10(IntPtr nativeObj, IntPtr tilts_mat_nativeObj, IntPtr rolls_mat_nativeObj);
// C++: String cv::AffineFeature::getDefaultName()
[DllImport(LIBNAME)]
private static extern IntPtr features2d_AffineFeature_getDefaultName_10(IntPtr nativeObj);
// native support for java finalize()
[DllImport(LIBNAME)]
private static extern void features2d_AffineFeature_delete(IntPtr nativeObj);
}
}