gpt4 book ai didi

opencv - 如何在 opencv 2.4.9 中启用 findEssentialMat?

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:41 26 4
gpt4 key购买 nike

我正在尝试使用 OpenCV 2.4.9 中的新函数 findEssentialMat() 但是当我尝试编译我的程序时它说 findEssentialMat 没有定义。我包含了 calib3d 并且还链接了正确的库。

OpenCV应该如何编译才能实现?

这是我的程序:

#include "opencv2/opencv.hpp"

using namespace std; using namespace 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

提前致谢

最佳答案

没有办法做到这一点

findEssentialMat()

是3.x版本实现的功能

根据此处的“How to Contribute OpenCV Guide”: http://code.opencv.org/projects/opencv/wiki/How_to_contribute2.4.x opencv 版本已卡住功能并进行维护只是为了向后兼容旧用户,用他们的话说:

“2.4 已卡住功能;因此,将不接受新功能。”

我强烈建议您安装 3.x 版本。

有一些很好的教程: http://embedonix.com/articles/image-processing/installing-opencv-3-1-0-on-ubuntu/#comment-125 http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-ubuntu-14-04/ (最后一个对我有用)

关于opencv - 如何在 opencv 2.4.9 中启用 findEssentialMat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15492402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com