は、関数org.opencv.Calib3d.findHomography(..)は、同次変換行列を返します。取得5点Android用のOpenCVで
Mat homography = Calib3d.findHomography(points1, points2, Calib3d.RANSAC, 0.5);
RANSACが実際にAndroidのOpenCVのAPIから使用してポイントを返す方法があります:たとえば、これが唯一のホモグラフィを返しますか?
は、関数org.opencv.Calib3d.findHomography(..)は、同次変換行列を返します。取得5点Android用のOpenCVで
Mat homography = Calib3d.findHomography(points1, points2, Calib3d.RANSAC, 0.5);
RANSACが実際にAndroidのOpenCVのAPIから使用してポイントを返す方法があります:たとえば、これが唯一のホモグラフィを返しますか?
更新
私は実際にあなたのインライア(OpenCVの2.4.2)を与えることができ、それはOpenCVのに新たに追加だか、私はそれを見逃しているかどうかを確認してください、しかしfindHomography()機能していません。最後のパラメータmask
は、デフォルトで空ですが、RANSACによって作成されたインライアのインデックスに1または255が入ります。 (テクニカルドキュメントにおける呼ばインライア)ホモグラフィを推定するためにRANSACによって使用
Mat findHomography(InputArray srcPoints, InputArray dstPoints,
int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray())
// ^
// |
オールド答え
点を直接抽出することができません。それらは内部的に計算されますが、リストは削除されます。
それらを抽出する方法は、findHomography関数(および対応するRANSAC機能)を変更することです。しかし、これは醜いです。
もう、きれいな方法は、ホモグラフィ番目の入力試合で何点ペアをテストすることです:
ポイントにホモグラフィを適用する(私はこれは関数名であると思います)projectPoints(points1, homography, points1_dest)
を使用しています。 cv::distance(points1_dest, points2)
を使用して、どれがポイント2でペアに十分近いかを確認します。距離はmin_distance^2
より小さいか等しい必要があります。あなたの場合、0.5*0.5 = 0.25
。
これはすばらしい回避策です。 –
RANSACコードを直接変更する場合、使用するポイントを保存する場所はどこですか?それがループ内にあるかどうか if(goodCount> MAX(maxGoodCount、modelPoints-1)){} ??? この時点で、ms1とms2の値を保存しますか? –