aruco_estimatePoseSingleMarkers

[32/64bit] 単一のマーカに対する姿勢推定

aruco_estimatePoseSingleMarkers p1,p2,p3,p4,p5,p6,p7,p8,p9

p1 = sptr : [MarshalAs(UnmanagedType.LPArray)] IntPtr[] corners
p2 = int : int cornersLength1
p3 = var : int[] cornersLengths2
p4 = float : float markerLength
p5 = sptr : IntPtr cameraMatrix
p6 = sptr : IntPtr distCoeffs
p7 = sptr : IntPtr rvecs
p8 = sptr : IntPtr tvecs
p9 = sptr : IntPtr objPoints

(プラグイン / モジュール : OpenCvSharpExtern.dll)

解説

See alsodetectMarkersSee alsoRodrigues)(例:std::vector<cv::Vec3d>)。この関数は,検出されたマーカを受け取り,カメラに対する姿勢の推定値を個別に返します.つまり,各マーカーに対して,1つの回転ベクトルと並進ベクトルが返されます.返される変換は,各マーカの座標系からカメラの座標系へと点を変換するものです.マーカー座標系は、マーカーの中央を中心とし、Z軸はマーカー平面に垂直です。マーカーの四隅の座標を独自の座標系で表すと(-markerLength/2, markerLength/2, 0)、(markerLength/2, markerLength/2, 0)、(markerLength/2, -markerLength/2, 0)、(-markerLength/2, -markerLength/2, 0)

元関数名(C#): aruco_estimatePoseSingleMarkers
元DLLエクスポート名: aruco_estimatePoseSingleMarkers
参照元CSファイル: Internal\PInvoke\NativeMethods\NativeMethods_aruco.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) aruco_estimatePoseSingleMarkers(
    cv::Point2f **corners, int cornersLength1,
    int *cornersLengths2, float markerLength,
    cv::_InputArray *cameraMatrix,
    cv::_InputArray *distCoeffs,
    cv::_OutputArray *rvecs, 
    cv::_OutputArray *tvecs,
    cv::_OutputArray *objPoints)
{
    BEGIN_WRAP
    std::vector<std::vector<cv::Point2f> > cornersVec(cornersLength1);
    for (int i = 0; i < cornersLength1; i++)    
        cornersVec[i] = std::vector<cv::Point2f>(corners[i], corners[i] + cornersLengths2[i]);    

    cv::aruco::estimatePoseSingleMarkers(cornersVec, markerLength, *cameraMatrix, *distCoeffs, *rvecs, *tvecs, entity(objPoints));
    END_WRAP
}

情報

プラグイン / モジュールOpenCvSharpExtern.dll
バージョン1.00
作成日2021/11/30
著作者inovia
URLhttps://hsp.moe/
備考#include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as"
使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること
タイプOpenCVSharpラッパーDLL
グループNativeMethods_aruco
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\OpenCvSharpExtern.hs