[32/64bit] RANSACスキームを用いて,3D-2Dの点の対応関係から物体のポーズを見つけます.
calib3d_solvePnPRansac_vector p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15
p1 = var : Point3f[] objectPoints p2 = int : int objectPointsLength p3 = var : Point2f[] imagePoints p4 = int : int imagePointsLength p5 = var : double* cameraMatrix p6 = var : double[]? distCoeffs p7 = int : int distCoeffsLength p8 = var : [Out] double[] rvec p9 = var : [Out] double[] tvec p10 = int : int useExtrinsicGuess p11 = int : int iterationsCount p12 = float : float reprojectionError p13 = double : double confidence p14 = sptr : IntPtr inliers p15 = int : int flags
(プラグイン / モジュール : OpenCvSharpExtern.dll)
この関数は,オブジェクトポイントの集合と,それに対応する画像投影,さらにカメラの固有行列と歪み係数が与えられた場合に,オブジェクトのポーズを推定します.この関数は,再投影誤差,つまり,観測された投影画像ポイントと,(projectPoints を用いて)投影されたオブジェクトポイントとの間の二乗距離の総和を最小にするようなポーズを求めます.RANSAC を用いることで,外れ値に強い関数となっています. オブジェクト検出のための solvePNPRansac の使用例は, opencv_source_code/samples/cpp/tutorial_code/calib3d/real_time_pose_estimation/ にあります. Minimal Sample Setsステップのカメラポーズの推定に使用されるデフォルトの方法はSOLVEPNP_EPNPです。例外があります。 SOLVEPNP_P3PまたはSOLVEPNP_AP3Pを選択した場合、これらの方法が使用されます。 入力ポイント数が4に等しい場合、SOLVEPNP_P3Pが使用されます。 すべてのインライアを使用してカメラポーズを推定するために使用される手法は、SOLVEPNP_P3PまたはSOLVEPNP_AP3Pに等しくない限り、フラグパラメータによって定義される。この場合、代わりにSOLVEPNP_EPNP法が使用される。 元関数名(C#): calib3d_solvePnPRansac_vector 元DLLエクスポート名: calib3d_solvePnPRansac_vector 参照元CSファイル: Internal\PInvoke\NativeMethods\calib3d\NativeMethods_calib3d.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) calib3d_solvePnPRansac_vector(
cv::Point3f *objectPoints, int objectPointsLength,
cv::Point2f *imagePoints, int imagePointsLength,
double *cameraMatrix,
double *distCoeffs, int distCoeffsLength,
double *rvec, double *tvec,
int useExtrinsicGuess, int iterationsCount, float reprojectio_____r, double confidence,
std::vector<int> *inliers, int flags)
{
BEGIN_WRAP
const cv::Mat objectPointsMat(objectPointsLength, 1, CV_64FC3, objectPoints);
const cv::Mat imagePointsMat(imagePointsLength, 1, CV_64FC2, imagePoints);
cv::Mat distCoeffsMat;
if (distCoeffs != nullptr)
distCoeffsMat = cv::Mat(distCoeffsLength, 1, CV_64FC1, distCoeffs);
cv::Matx<double, 3, 1> rvecM, tvecM;
cv::solvePnPRansac(objectPointsMat, imagePointsMat, *cameraMatrix, distCoeffsMat, rvecM, tvecM,
useExtrinsicGuess != 0, iterationsCount, reprojectio_____r, confidence,
*inliers, flags);
memcpy(rvec, rvecM.val, sizeof(double) * 3);
memcpy(tvec, tvecM.val, sizeof(double) * 3);
END_WRAP
}
| プラグイン / モジュール | OpenCvSharpExtern.dll |
| バージョン | 1.00 |
| 作成日 | 2021/11/30 |
| 著作者 | inovia |
| URL | https://hsp.moe/ |
| 備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
| タイプ | OpenCVSharpラッパーDLL |
| グループ | NativeMethods_calib3d |
| 対応環境 |
|
| hs ファイル | hsphelp\OpenCvSharpExtern.hs |