OpenCV for Unity 3.0.4
Enox Software / Please refer to OpenCV official document ( http://docs.opencv.org/5.0/index.html ) for the details of the argument of the method.
Loading...
Searching...
No Matches
OpenCVForUnity.Extensions.OpenCVARUtils Class Reference

OpenCV AR utilities (engine-independent: drawing, frustum, projection, pose, Mat4d TRS). More...

Classes

struct  Mat4d
 4×4 matrix (row-major layout: mRC is row R, column C). More...
 
struct  PoseData
 Position and rotation pose data for AR utilities. Rotation is a unit quaternion stored as (x, y, z, w). More...
 

Static Public Member Functions

static Mat4d CalculateCameraMatrixValuesFromProjectionMatrix (in Mat4d projectionMatrix, double width, double height)
 Recovers OpenCV-style intrinsic values (fx, fy, cx, cy) from a projection matrix produced by CalculateProjectionMatrixFromCameraMatrixValues. Result is stored in a Mat4d with m00=fx, m11=fy, m02=cx, m12=cy, m22=1.
 
static Matrix4x4 CalculateCameraMatrixValuesFromProjectionMatrix (Matrix4x4 projectionMatrix, float width, float height)
 Calculates OpenCV-style intrinsic camera parameters from a Unity-compatible projection matrix. Always assumes Unity Camera.projectionMatrix convention. No optional flag.
 
static Mat4d CalculateCameraMatrixValuesFromProjectionMatrix (ReadOnlySpan< double > projectionMatrix, double width, double height)
 Span(16) overload: recovers intrinsics from a row-major projection matrix.
 
static float CalculateDistance (float frustumSize, float fov)
 Calculates distance from frustum size and FOV angle (degrees).
 
static float CalculateFOVAngle (float frustumSize, float distance)
 Calculates FOV angle (degrees) from frustum size and distance.
 
static float CalculateFrustumSize (float distance, float fov)
 Calculates frustum size at a given distance and FOV angle (degrees).
 
static Mat4d CalculateProjectionMatrixFromCameraMatrixValues (double fx, double fy, double cx, double cy, double width, double height, double near=0.01, double far=2000.0)
 Builds a 4×4 projection matrix from OpenCV-style camera intrinsics.
 
static void CalculateProjectionMatrixFromCameraMatrixValues (double fx, double fy, double cx, double cy, double width, double height, Span< double > destination, double near=0.01, double far=2000.0)
 Span(16) overload: writes projection matrix in row-major order.
 
static Matrix4x4 CalculateProjectionMatrixFromCameraMatrixValues (float fx, float fy, float cx, float cy, float width, float height, float near=0.01f, float far=2000f)
 Calculates a projection matrix from OpenCV-style camera intrinsic parameters, suitable for use as Camera.projectionMatrix in Unity.
 
static Matrix4x4 ComposeMatrix (Vector3 localPosition, Quaternion localRotation, Vector3 localScale)
 Composes a TRS matrix from position, rotation and scale.
 
static Mat4d ComposeTrsMatrix (in Vec3d translation, in Vec4d rotation, in Vec3d scale)
 Composes a TRS matrix from translation, unit quaternion (x,y,z,w), and scale.
 
static void ComposeTrsMatrix (in Vec3d translation, in Vec4d rotation, in Vec3d scale, Span< double > destination)
 Span(16) overload: writes ComposeTrsMatrix result in row-major order.
 
static PoseData ConvertMatrixToPoseData (in Mat4d matrix)
 Converts a TRS matrix to PoseData (translation + rotation; scale discarded).
 
static PoseData ConvertMatrixToPoseData (ReadOnlySpan< double > matrix)
 Span(16) overload for ConvertMatrixToPoseData(in Mat4d).
 
static PoseData ConvertMatrixToPoseData (ref Matrix4x4 matrix)
 Converts a Unity transform matrix to PoseData using Unity Quaternion.LookRotation.
 
static Mat4d ConvertPoseDataToMat4 (in PoseData poseData)
 Converts PoseData to a TRS matrix with unit scale. No coordinate-system conversion.
 
static void ConvertPoseDataToMat4 (in PoseData poseData, Span< double > destination)
 Span(16) overload: writes ConvertPoseDataToMat4 result in row-major order.
 
static Matrix4x4 ConvertPoseDataToMatrix (ref PoseData poseData, bool convertToUnityCoordinates=true)
 Converts PoseData to a Unity transform matrix.
 
static Vec4d ConvertRvecToRotation (Mat rvec)
 Converts an OpenCV rotation vector Mat to a unit quaternion (x, y, z, w).
 
static void ConvertRvecToRotation (Mat rvec, out Quaternion rotation)
 Converts an OpenCV rotation vector Mat to a Unity Quaternion.
 
static Vec4d ConvertRvecToRotation (ReadOnlySpan< double > rvec)
 Converts an OpenCV rotation vector (Rodrigues) to a unit quaternion (x, y, z, w).
 
static void ConvertRvecToRotation (ReadOnlySpan< double > rvec, out Quaternion rotation)
 Converts an OpenCV rotation vector (Rodrigues) to a Unity Quaternion.
 
static PoseData ConvertRvecTvecToPoseData (Mat rvec, Mat tvec)
 Converts rvec and tvec Mats to PoseData.
 
static PoseData ConvertRvecTvecToPoseData (ReadOnlySpan< double > rvec, ReadOnlySpan< double > tvec)
 Converts rvec and tvec to PoseData.
 
static Vec3d ConvertTvecToTranslation (Mat tvec)
 Converts an OpenCV translation vector Mat to Vec3d.
 
static void ConvertTvecToTranslation (Mat tvec, out Vector3 translation)
 Converts an OpenCV translation vector Mat to a Unity Vector3.
 
static Vec3d ConvertTvecToTranslation (ReadOnlySpan< double > tvec)
 Converts an OpenCV translation vector to Vec3d.
 
static void ConvertTvecToTranslation (ReadOnlySpan< double > tvec, out Vector3 translation)
 Converts an OpenCV translation vector to a Unity Vector3.
 
static Mat4d CopyMatrix4x4ToMat4d (in Matrix4x4 matrix)
 Copies a Unity Matrix4x4 to engine-independent Mat4d (row-major, 16 elements).
 
static Dictionary< int, PoseData > CreatePoseDataDict (ReadOnlySpan< int > ids, ReadOnlySpan< double > rvecs, ReadOnlySpan< double > tvecs)
 Creates a pose data dictionary from marker ids and packed rvecs/tvecs (length = ids.Length * 3).
 
static void DecomposeMatrix (ref Matrix4x4 matrix, out Vector3 localPosition, out Quaternion localRotation, out Vector3 localScale)
 Extract position, rotation and scale from TRS matrix.
 
static void DecomposeTrsMatrix (in Mat4d matrix, out Vec3d translation, out Vec4d rotation, out Vec3d scale)
 Decomposes a TRS matrix into translation, rotation quaternion (x,y,z,w), and scale. Rotation is recovered from the orthonormalized basis (robust matrix-to-quaternion), independent of any engine LookRotation implementation.
 
static void DecomposeTrsMatrix (ReadOnlySpan< double > matrix, out Vec3d translation, out Vec4d rotation, out Vec3d scale)
 Span(16) overload for DecomposeTrsMatrix(in Mat4d, out Vec3d, out Vec4d, out Vec3d).
 
static Quaternion ExtractRotationFromMatrix (ref Matrix4x4 matrix)
 Extract rotation quaternion from transform matrix via Quaternion.LookRotation.
 
static Vector3 ExtractScaleFromMatrix (ref Matrix4x4 matrix)
 Extract scale from transform matrix.
 
static Vector3 ExtractTranslationFromMatrix (ref Matrix4x4 matrix)
 Extract translation from transform matrix.
 
static void LowpassPoseData (ref PoseData oldPose, ref PoseData newPose, float posThreshold, float rotThreshold)
 Suppresses position and rotation changes in newPose that are below the given thresholds.
 
static void LowpassPoseDataDict (Dictionary< int, PoseData > oldDict, Dictionary< int, PoseData > newDict, float posThreshold, float rotThreshold)
 Applies LowpassPoseData for each key present in both dictionaries.
 
static void SafeDrawFrameAxes (Mat image, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec, float length, int thickness=3)
 Safe version of drawFrameAxes that skips drawing when tvec has a near-zero Z component.
 
static void SetTransformFromMatrix (Transform transform, ref Matrix4x4 matrix)
 Set transform component from TRS matrix.
 
static void SmoothingFilterPoseData (ref PoseData oldPose, ref PoseData newPose, float positionSmoothingFactor, float rotationSmoothingFactor)
 Applies exponential moving average smoothing (translation lerp + rotation nlerp).
 
static void SmoothingFilterPoseDataDict (Dictionary< int, PoseData > oldDict, Dictionary< int, PoseData > newDict, float positionSmoothingFactor, float rotationSmoothingFactor)
 Applies SmoothingFilterPoseData for each key present in both dictionaries.
 

Detailed Description

OpenCV AR utilities (engine-independent: drawing, frustum, projection, pose, Mat4d TRS).

OpenCV AR utilities — Unity Integration partial (Quaternion/Vector3 sugar, Unity projection, TRS / Transform / handedness).

Member Function Documentation

◆ CalculateCameraMatrixValuesFromProjectionMatrix() [1/3]

static Mat4d OpenCVForUnity.Extensions.OpenCVARUtils.CalculateCameraMatrixValuesFromProjectionMatrix ( in Mat4d projectionMatrix,
double width,
double height )
static

Recovers OpenCV-style intrinsic values (fx, fy, cx, cy) from a projection matrix produced by CalculateProjectionMatrixFromCameraMatrixValues. Result is stored in a Mat4d with m00=fx, m11=fy, m02=cx, m12=cy, m22=1.

Parameters
projectionMatrixRow-major projection matrix from CalculateProjectionMatrixFromCameraMatrixValues.
widthImage width (pixels) used when the projection matrix was built.
heightImage height (pixels) used when the projection matrix was built.
Returns
Intrinsic values packed in a Mat4d (m00=fx, m11=fy, m02=cx, m12=cy, m22=1).

◆ CalculateCameraMatrixValuesFromProjectionMatrix() [2/3]

static Matrix4x4 OpenCVForUnity.Extensions.OpenCVARUtils.CalculateCameraMatrixValuesFromProjectionMatrix ( Matrix4x4 projectionMatrix,
float width,
float height )
static

Calculates OpenCV-style intrinsic camera parameters from a Unity-compatible projection matrix. Always assumes Unity Camera.projectionMatrix convention. No optional flag.

Parameters
projectionMatrixUnity-compatible projection matrix.
widthImage width (pixels) used when the projection matrix was built.
heightImage height (pixels) used when the projection matrix was built.
Returns
Intrinsic values packed in a Matrix4x4 (m00=fx, m11=fy, m02=cx, m12=cy, m22=1).

◆ CalculateCameraMatrixValuesFromProjectionMatrix() [3/3]

static Mat4d OpenCVForUnity.Extensions.OpenCVARUtils.CalculateCameraMatrixValuesFromProjectionMatrix ( ReadOnlySpan< double > projectionMatrix,
double width,
double height )
static

Span(16) overload: recovers intrinsics from a row-major projection matrix.

Parameters
projectionMatrixRow-major projection matrix (length must be 16).
widthImage width (pixels) used when the projection matrix was built.
heightImage height (pixels) used when the projection matrix was built.
Returns
Intrinsic values packed in a Mat4d (m00=fx, m11=fy, m02=cx, m12=cy, m22=1).
Exceptions
ArgumentExceptionThrown when projectionMatrix .Length is not 16.

◆ CalculateDistance()

static float OpenCVForUnity.Extensions.OpenCVARUtils.CalculateDistance ( float frustumSize,
float fov )
static

Calculates distance from frustum size and FOV angle (degrees).

Parameters
frustumSizeFrustum width (or height) at the target distance.
fovField of view angle in degrees.
Returns
Distance from the camera along the view axis.

◆ CalculateFOVAngle()

static float OpenCVForUnity.Extensions.OpenCVARUtils.CalculateFOVAngle ( float frustumSize,
float distance )
static

Calculates FOV angle (degrees) from frustum size and distance.

Parameters
frustumSizeFrustum width (or height) at distance .
distanceDistance from the camera along the view axis.
Returns
Field of view angle in degrees.

◆ CalculateFrustumSize()

static float OpenCVForUnity.Extensions.OpenCVARUtils.CalculateFrustumSize ( float distance,
float fov )
static

Calculates frustum size at a given distance and FOV angle (degrees).

Parameters
distanceDistance from the camera along the view axis.
fovField of view angle in degrees.
Returns
Frustum width (or height, depending on which FOV is used) at distance .

◆ CalculateProjectionMatrixFromCameraMatrixValues() [1/3]

static Mat4d OpenCVForUnity.Extensions.OpenCVARUtils.CalculateProjectionMatrixFromCameraMatrixValues ( double fx,
double fy,
double cx,
double cy,
double width,
double height,
double near = 0::01,
double far = 2000::0 )
static

Builds a 4×4 projection matrix from OpenCV-style camera intrinsics.

Convention (fixed for this core API): OpenCV image origin is top-left (Y down); the returned matrix uses a Y-up principal-point mapping (m12 = -1 + 2*cy/height), matching a common AR camera projection matrix layout in row-major Mat4d elements. No engine runtime is required.

Parameters
fxFocal length along the X axis (pixels).
fyFocal length along the Y axis (pixels).
cxPrincipal point X coordinate (pixels).
cyPrincipal point Y coordinate (pixels).
widthImage width (pixels).
heightImage height (pixels).
nearNear clipping plane distance.
farFar clipping plane distance.
Returns
Row-major 4×4 projection matrix.

◆ CalculateProjectionMatrixFromCameraMatrixValues() [2/3]

static void OpenCVForUnity.Extensions.OpenCVARUtils.CalculateProjectionMatrixFromCameraMatrixValues ( double fx,
double fy,
double cx,
double cy,
double width,
double height,
Span< double > destination,
double near = 0::01,
double far = 2000::0 )
static

Span(16) overload: writes projection matrix in row-major order.

Parameters
fxFocal length along the X axis (pixels).
fyFocal length along the Y axis (pixels).
cxPrincipal point X coordinate (pixels).
cyPrincipal point Y coordinate (pixels).
widthImage width (pixels).
heightImage height (pixels).
destinationDestination span (length must be 16).
nearNear clipping plane distance.
farFar clipping plane distance.
Exceptions
ArgumentExceptionThrown when destination .Length is not 16.

◆ CalculateProjectionMatrixFromCameraMatrixValues() [3/3]

static Matrix4x4 OpenCVForUnity.Extensions.OpenCVARUtils.CalculateProjectionMatrixFromCameraMatrixValues ( float fx,
float fy,
float cx,
float cy,
float width,
float height,
float near = 0::01f,
float far = 2000f )
static

Calculates a projection matrix from OpenCV-style camera intrinsic parameters, suitable for use as Camera.projectionMatrix in Unity.

Always converts from OpenCV's right-handed camera coordinates (Z-forward, Y-down) to Unity's left-handed camera coordinates (Z-forward, Y-up). No optional flag.

Parameters
fxFocal length along the X axis (pixels).
fyFocal length along the Y axis (pixels).
cxPrincipal point X coordinate (pixels).
cyPrincipal point Y coordinate (pixels).
widthImage width (pixels).
heightImage height (pixels).
nearNear clipping plane distance.
farFar clipping plane distance.
Returns
Unity-compatible projection matrix.

◆ ComposeMatrix()

static Matrix4x4 OpenCVForUnity.Extensions.OpenCVARUtils.ComposeMatrix ( Vector3 localPosition,
Quaternion localRotation,
Vector3 localScale )
static

Composes a TRS matrix from position, rotation and scale.

Parameters
localPositionLocal position.
localRotationLocal rotation.
localScaleLocal scale.
Returns
The composed Unity transform matrix.

◆ ComposeTrsMatrix() [1/2]

static Mat4d OpenCVForUnity.Extensions.OpenCVARUtils.ComposeTrsMatrix ( in Vec3d translation,
in Vec4d rotation,
in Vec3d scale )
static

Composes a TRS matrix from translation, unit quaternion (x,y,z,w), and scale.

Parameters
translationTranslation vector.
rotationUnit quaternion (x, y, z, w).
scalePer-axis scale.
Returns
Row-major 4×4 TRS matrix.

◆ ComposeTrsMatrix() [2/2]

static void OpenCVForUnity.Extensions.OpenCVARUtils.ComposeTrsMatrix ( in Vec3d translation,
in Vec4d rotation,
in Vec3d scale,
Span< double > destination )
static

Span(16) overload: writes ComposeTrsMatrix result in row-major order.

Parameters
translationTranslation vector.
rotationUnit quaternion (x, y, z, w).
scalePer-axis scale.
destinationDestination span (length must be 16).
Exceptions
ArgumentExceptionThrown when destination .Length is not 16.

◆ ConvertMatrixToPoseData() [1/3]

static PoseData OpenCVForUnity.Extensions.OpenCVARUtils.ConvertMatrixToPoseData ( in Mat4d matrix)
static

Converts a TRS matrix to PoseData (translation + rotation; scale discarded).

Parameters
matrixRow-major 4×4 TRS matrix.
Returns
Pose data with translation and rotation; scale is not retained.

◆ ConvertMatrixToPoseData() [2/3]

static PoseData OpenCVForUnity.Extensions.OpenCVARUtils.ConvertMatrixToPoseData ( ReadOnlySpan< double > matrix)
static

Span(16) overload for ConvertMatrixToPoseData(in Mat4d).

Parameters
matrixRow-major matrix elements (length must be 16).
Returns
Pose data with translation and rotation; scale is not retained.
Exceptions
ArgumentExceptionThrown when matrix .Length is not 16.

◆ ConvertMatrixToPoseData() [3/3]

static PoseData OpenCVForUnity.Extensions.OpenCVARUtils.ConvertMatrixToPoseData ( ref Matrix4x4 matrix)
static

Converts a Unity transform matrix to PoseData using Unity Quaternion.LookRotation.

Parameters
matrixUnity transform matrix.
Returns
Pose data with PoseData.Translation and PoseData.Rotation.

◆ ConvertPoseDataToMat4() [1/2]

static Mat4d OpenCVForUnity.Extensions.OpenCVARUtils.ConvertPoseDataToMat4 ( in PoseData poseData)
static

Converts PoseData to a TRS matrix with unit scale. No coordinate-system conversion.

Parameters
poseDataPose data (translation + rotation).
Returns
Row-major 4×4 TRS matrix with unit scale.

◆ ConvertPoseDataToMat4() [2/2]

static void OpenCVForUnity.Extensions.OpenCVARUtils.ConvertPoseDataToMat4 ( in PoseData poseData,
Span< double > destination )
static

Span(16) overload: writes ConvertPoseDataToMat4 result in row-major order.

Parameters
poseDataPose data (translation + rotation).
destinationDestination span (length must be 16).
Exceptions
ArgumentExceptionThrown when destination .Length is not 16.

◆ ConvertPoseDataToMatrix()

static Matrix4x4 OpenCVForUnity.Extensions.OpenCVARUtils.ConvertPoseDataToMatrix ( ref PoseData poseData,
bool convertToUnityCoordinates = true )
static

Converts PoseData to a Unity transform matrix.

Parameters
poseDataPose data.
convertToUnityCoordinatesWhen true (default), converts from OpenCV's right-handed coordinate system to Unity's left-handed coordinate system by inverting the Y-axis. Enable this when applying an OpenCV-estimated pose to a Unity object. When false, returns the matrix without coordinate-system conversion.
Returns
Transform matrix.

◆ ConvertRvecToRotation() [1/4]

static Vec4d OpenCVForUnity.Extensions.OpenCVARUtils.ConvertRvecToRotation ( Mat rvec)
static

Converts an OpenCV rotation vector Mat to a unit quaternion (x, y, z, w).

Parameters
rvecRotation vector Mat (continuous, CV_64F, at least 3 elements).
Returns
Unit quaternion as Vec4d (x, y, z, w).
Exceptions
ArgumentExceptionThrown when rvec is not continuous or does not contain at least 3 CV_64F elements.

◆ ConvertRvecToRotation() [2/4]

static void OpenCVForUnity.Extensions.OpenCVARUtils.ConvertRvecToRotation ( Mat rvec,
out Quaternion rotation )
static

Converts an OpenCV rotation vector Mat to a Unity Quaternion.

Parameters
rvecRotation vector Mat (continuous, CV_64F, at least 3 elements).
rotationConverted Unity rotation quaternion.

◆ ConvertRvecToRotation() [3/4]

static Vec4d OpenCVForUnity.Extensions.OpenCVARUtils.ConvertRvecToRotation ( ReadOnlySpan< double > rvec)
static

Converts an OpenCV rotation vector (Rodrigues) to a unit quaternion (x, y, z, w).

Parameters
rvecRotation vector (at least 3 elements).
Returns
Unit quaternion as Vec4d (x, y, z, w). Returns identity when the vector magnitude is near zero.
Exceptions
ArgumentExceptionThrown when rvec .Length is less than 3.

◆ ConvertRvecToRotation() [4/4]

static void OpenCVForUnity.Extensions.OpenCVARUtils.ConvertRvecToRotation ( ReadOnlySpan< double > rvec,
out Quaternion rotation )
static

Converts an OpenCV rotation vector (Rodrigues) to a Unity Quaternion.

Same name as the core ConvertRvecToRotation(ReadOnlySpan<double>) API; the out Quaternion parameter selects this Unity overload (C# does not allow overloading by return type alone).

Parameters
rvecRotation vector (at least 3 elements).
rotationConverted Unity rotation quaternion.

◆ ConvertRvecTvecToPoseData() [1/2]

static PoseData OpenCVForUnity.Extensions.OpenCVARUtils.ConvertRvecTvecToPoseData ( Mat rvec,
Mat tvec )
static

Converts rvec and tvec Mats to PoseData.

Parameters
rvecRotation vector Mat (continuous, CV_64F, at least 3 elements).
tvecTranslation vector Mat (continuous, CV_64F, at least 3 elements).
Returns
Pose data with PoseData.Translation and PoseData.Rotation.

◆ ConvertRvecTvecToPoseData() [2/2]

static PoseData OpenCVForUnity.Extensions.OpenCVARUtils.ConvertRvecTvecToPoseData ( ReadOnlySpan< double > rvec,
ReadOnlySpan< double > tvec )
static

Converts rvec and tvec to PoseData.

Parameters
rvecRotation vector (at least 3 elements).
tvecTranslation vector (at least 3 elements).
Returns
Pose data with PoseData.Translation and PoseData.Rotation.

◆ ConvertTvecToTranslation() [1/4]

static Vec3d OpenCVForUnity.Extensions.OpenCVARUtils.ConvertTvecToTranslation ( Mat tvec)
static

Converts an OpenCV translation vector Mat to Vec3d.

Parameters
tvecTranslation vector Mat (continuous, CV_64F, at least 3 elements).
Returns
Translation as Vec3d.
Exceptions
ArgumentExceptionThrown when tvec is not continuous or does not contain at least 3 CV_64F elements.

◆ ConvertTvecToTranslation() [2/4]

static void OpenCVForUnity.Extensions.OpenCVARUtils.ConvertTvecToTranslation ( Mat tvec,
out Vector3 translation )
static

Converts an OpenCV translation vector Mat to a Unity Vector3.

Parameters
tvecTranslation vector Mat (continuous, CV_64F, at least 3 elements).
translationConverted Unity position vector.

◆ ConvertTvecToTranslation() [3/4]

static Vec3d OpenCVForUnity.Extensions.OpenCVARUtils.ConvertTvecToTranslation ( ReadOnlySpan< double > tvec)
static

Converts an OpenCV translation vector to Vec3d.

Parameters
tvecTranslation vector (at least 3 elements).
Returns
Translation as Vec3d.
Exceptions
ArgumentExceptionThrown when tvec .Length is less than 3.

◆ ConvertTvecToTranslation() [4/4]

static void OpenCVForUnity.Extensions.OpenCVARUtils.ConvertTvecToTranslation ( ReadOnlySpan< double > tvec,
out Vector3 translation )
static

Converts an OpenCV translation vector to a Unity Vector3.

Same name as the core ConvertTvecToTranslation(ReadOnlySpan<double>) API; the out Vector3 parameter selects this Unity overload.

Parameters
tvecTranslation vector (at least 3 elements).
translationConverted Unity position vector.

◆ CopyMatrix4x4ToMat4d()

static Mat4d OpenCVForUnity.Extensions.OpenCVARUtils.CopyMatrix4x4ToMat4d ( in Matrix4x4 matrix)
static

Copies a Unity Matrix4x4 to engine-independent Mat4d (row-major, 16 elements).

Parameters
matrixSource Unity projection or transform matrix.
Returns
Equivalent Mat4d.

◆ CreatePoseDataDict()

static Dictionary< int, PoseData > OpenCVForUnity.Extensions.OpenCVARUtils.CreatePoseDataDict ( ReadOnlySpan< int > ids,
ReadOnlySpan< double > rvecs,
ReadOnlySpan< double > tvecs )
static

Creates a pose data dictionary from marker ids and packed rvecs/tvecs (length = ids.Length * 3).

Parameters
idsMarker identifiers.
rvecsPacked rotation vectors (3 doubles per id).
tvecsPacked translation vectors (3 doubles per id).
Returns
Dictionary mapping each id to its PoseData.
Exceptions
ArgumentExceptionThrown when ids.Length * 3 does not equal rvecs .Length and tvecs .Length.

◆ DecomposeMatrix()

static void OpenCVForUnity.Extensions.OpenCVARUtils.DecomposeMatrix ( ref Matrix4x4 matrix,
out Vector3 localPosition,
out Quaternion localRotation,
out Vector3 localScale )
static

Extract position, rotation and scale from TRS matrix.

Parameters
matrixTransform matrix.
localPositionExtracted local position.
localRotationExtracted local rotation.
localScaleExtracted local scale.

◆ DecomposeTrsMatrix() [1/2]

static void OpenCVForUnity.Extensions.OpenCVARUtils.DecomposeTrsMatrix ( in Mat4d matrix,
out Vec3d translation,
out Vec4d rotation,
out Vec3d scale )
static

Decomposes a TRS matrix into translation, rotation quaternion (x,y,z,w), and scale. Rotation is recovered from the orthonormalized basis (robust matrix-to-quaternion), independent of any engine LookRotation implementation.

Parameters
matrixRow-major 4×4 TRS matrix.
translationExtracted translation.
rotationExtracted unit quaternion (x, y, z, w).
scaleExtracted per-axis scale.

◆ DecomposeTrsMatrix() [2/2]

static void OpenCVForUnity.Extensions.OpenCVARUtils.DecomposeTrsMatrix ( ReadOnlySpan< double > matrix,
out Vec3d translation,
out Vec4d rotation,
out Vec3d scale )
static

Span(16) overload for DecomposeTrsMatrix(in Mat4d, out Vec3d, out Vec4d, out Vec3d).

Parameters
matrixRow-major matrix elements (length must be 16).
translationExtracted translation.
rotationExtracted unit quaternion (x, y, z, w).
scaleExtracted per-axis scale.
Exceptions
ArgumentExceptionThrown when matrix .Length is not 16.

◆ ExtractRotationFromMatrix()

static Quaternion OpenCVForUnity.Extensions.OpenCVARUtils.ExtractRotationFromMatrix ( ref Matrix4x4 matrix)
static

Extract rotation quaternion from transform matrix via Quaternion.LookRotation.

Parameters
matrixTransform matrix.
Returns
Rotation quaternion derived from the matrix basis vectors.

◆ ExtractScaleFromMatrix()

static Vector3 OpenCVForUnity.Extensions.OpenCVARUtils.ExtractScaleFromMatrix ( ref Matrix4x4 matrix)
static

Extract scale from transform matrix.

Parameters
matrixTransform matrix.
Returns
Per-axis scale derived from column magnitudes.

◆ ExtractTranslationFromMatrix()

static Vector3 OpenCVForUnity.Extensions.OpenCVARUtils.ExtractTranslationFromMatrix ( ref Matrix4x4 matrix)
static

Extract translation from transform matrix.

Parameters
matrixTransform matrix.
Returns
Translation vector (fourth column).

◆ LowpassPoseData()

static void OpenCVForUnity.Extensions.OpenCVARUtils.LowpassPoseData ( ref PoseData oldPose,
ref PoseData newPose,
float posThreshold,
float rotThreshold )
static

Suppresses position and rotation changes in newPose that are below the given thresholds.

Parameters
oldPosePrevious pose (read-only reference).
newPoseNew pose to filter; small changes are replaced with values from oldPose .
posThresholdPosition threshold (same units as translation).
rotThresholdRotation threshold in degrees.

◆ LowpassPoseDataDict()

static void OpenCVForUnity.Extensions.OpenCVARUtils.LowpassPoseDataDict ( Dictionary< int, PoseData > oldDict,
Dictionary< int, PoseData > newDict,
float posThreshold,
float rotThreshold )
static

Applies LowpassPoseData for each key present in both dictionaries.

Parameters
oldDictPrevious pose dictionary.
newDictNew pose dictionary; matching entries are filtered in place.
posThresholdPosition threshold (same units as translation).
rotThresholdRotation threshold in degrees.
Exceptions
ArgumentNullExceptionThrown when oldDict or newDict is null.

◆ SafeDrawFrameAxes()

static void OpenCVForUnity.Extensions.OpenCVARUtils.SafeDrawFrameAxes ( Mat image,
Mat cameraMatrix,
Mat distCoeffs,
Mat rvec,
Mat tvec,
float length,
int thickness = 3 )
static

Safe version of drawFrameAxes that skips drawing when tvec has a near-zero Z component.

Parameters
imageTarget image to draw on.
cameraMatrix3×3 camera intrinsic matrix.
distCoeffsDistortion coefficients (may be empty).
rvecRotation vector (Rodrigues, CV_64F, at least 3 elements).
tvecTranslation vector (CV_64F, at least 3 elements). Drawing is skipped when Z < 1e-4.
lengthAxis length in world units.
thicknessLine thickness in pixels.

◆ SetTransformFromMatrix()

static void OpenCVForUnity.Extensions.OpenCVARUtils.SetTransformFromMatrix ( Transform transform,
ref Matrix4x4 matrix )
static

Set transform component from TRS matrix.

Parameters
transformTarget Transform.
matrixTRS matrix to apply to transform .

◆ SmoothingFilterPoseData()

static void OpenCVForUnity.Extensions.OpenCVARUtils.SmoothingFilterPoseData ( ref PoseData oldPose,
ref PoseData newPose,
float positionSmoothingFactor,
float rotationSmoothingFactor )
static

Applies exponential moving average smoothing (translation lerp + rotation nlerp).

Parameters
oldPosePrevious pose used as the smoothing reference.
newPoseNew pose to smooth; updated in place.
positionSmoothingFactor0 = no filtering, 1 = maximum filtering.
rotationSmoothingFactor0 = no filtering, 1 = maximum filtering.

◆ SmoothingFilterPoseDataDict()

static void OpenCVForUnity.Extensions.OpenCVARUtils.SmoothingFilterPoseDataDict ( Dictionary< int, PoseData > oldDict,
Dictionary< int, PoseData > newDict,
float positionSmoothingFactor,
float rotationSmoothingFactor )
static

Applies SmoothingFilterPoseData for each key present in both dictionaries.

Parameters
oldDictPrevious pose dictionary.
newDictNew pose dictionary; matching entries are smoothed in place.
positionSmoothingFactor0 = no filtering, 1 = maximum filtering.
rotationSmoothingFactor0 = no filtering, 1 = maximum filtering.
Exceptions
ArgumentNullExceptionThrown when oldDict or newDict is null.

The documentation for this class was generated from the following files: