2

OpenCV 2.4.9 で新しい関数 findEssentialMat() を使用しようとしていますが、プログラムをコンパイルしようとすると、findEssentialMat が定義されていないと表示されます。私はcalib3dを含め、適切なライブラリもリンクしています。

関数を有効にするには、OpenCV をどのようにコンパイルすればよいですか?

これは私のプログラムです:

#include "opencv2/opencv.hpp"

名前空間 std を使用します。名前空間 cv を使用します。

Mat getEssential(const vector<KeyPoint>& keypoints1,const vector<KeyPoint>& keypoints2,vector<DMatch>& matches){
vector<Point2f> p1, p2;
for (vector<DMatch>::const_iterator it= matches.begin();it!= matches.end(); ++it) {
    float x=keypoints1[it->queryIdx].pt.x;
    float y=keypoints1[it->queryIdx].pt.y;
    p1.push_back(Point2f(x,y));
    x=keypoints2[it->trainIdx].pt.x;
    y=keypoints2[it->trainIdx].pt.y;
    p2.push_back(Point2f(x,y));
}
Mat output;
Mat essen = findEssentialMat(p1,p2,focal,pp,CV_RANSAC,0.99,1,output);
vector<DMatch> inliers;
for(int i=0;i<output.rows;i++){
    int status=output.at<char>(i,0);
    if(status==1){
        inliers.push_back(matches[i]);
    }
}
matches=inliers;
return essen;
}

int main(){
  Ptr<FeatureDetector> fast = new FastFeatureDetector(10,true);
  Ptr<FeatureDetector> detector = new PyramidAdaptedFeatureDetector(fast,3);
  FREAK freak(true,true,22.0f,0);
  BFMatcher matcher(NORM_HAMMING,true);

  vector<DMatch> matches;
  vector<KeyPoint> kp0,kp1;
  Mat d0, d1;
  Mat im0 = imread("/home/Chini/im0.png",0);
  Mat im1 = imread("/home/Chini/im1.png",0);
  detector->detect(im0,kp0,Mat());
  detector->detect(im1,kp0,Mat());
  freak.compute(im0,kp0,d0);
  freak.compute(im1,kp1,d1);
  matcher.match(d0,d1,matches);
  Mat e = getEssential(kp0,kp1,matches);
  }

コンパイルしようとすると、次のメッセージが表示されました。

example.cpp: In function ‘cv::Mat getEssential(const std::vector<cv::KeyPoint>&, const    std::vector<cv::KeyPoint>&, std::vector<cv::DMatch>&)’:
example.cpp:18:62: error: ‘findEssentialMat’ is not defined

前もって感謝します

4

1 に答える 1

4

それをする方法はありません

findEssentialMat()

3.x版で実装された機能です

ここの「OpenCVガイドに貢献する方法」に従って: http://code.opencv.org/projects/opencv/wiki/How_to_contribute 2.4.x opencvバージョンは機能凍結されており、レガシーとの下位互換性を提供するためだけに維持されていますユーザーの言葉で:

「2.4 は機能が凍結されているため、新しい機能は受け入れられません。」

3.x バージョンをインストールすることを強くお勧めします。

いくつかの優れたチュートリアルがあり ます 。 installation-opencv-3-0-0-on-ubuntu-14-04/ (最後にうまくいきました)

于 2016-03-03T21:33:06.490 に答える