opencv-3.0.0 ubuntu 14.04“nonfree / nonfree.hpp”构建错误 [英] opencv-3.0.0 ubuntu 14.04 "nonfree/nonfree.hpp" build error

查看:4968
本文介绍了opencv-3.0.0 ubuntu 14.04“nonfree / nonfree.hpp”构建错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在opencv-3.0.0中实现SURF算法
为此,我已经包含头文件

I am trying to implement the SURF algorithm in opencv-3.0.0 For it I have included the header files

#include <stdio.h>
#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/calib3d.hpp"
#include "opencv2/xfeatures2d.hpp"
#include "opencv2/calib3d.hpp"
#include <opencv2/nonfree/nonfree.hpp>
using namespace cv;
using namespace std;

但我一直遇到下面提到的错误。我试过搜索到处,但找不到任何解决方案。我已经建立了具有额外依赖性的opencv模块。

but I keep getting the error mentioned below. I have tried searching everywhere but couldn't find any solution. I have already build the opencv module with extra dependencies.

In file included from /usr/include/opencv2/nonfree/nonfree.hpp:46:0,
             from panaroma.cpp:7:
/usr/include/opencv2/nonfree/features2d.hpp:73:21: error: ‘vector’ has not been declared
                 vector<KeyPoint>& keypoints) const;
                 ^
/usr/include/opencv2/nonfree/features2d.hpp:73:27: error: expected ‘,’ or ‘...’ before ‘<’ token
                 vector<KeyPoint>& keypoints) const;
                       ^
/usr/include/opencv2/nonfree/features2d.hpp:77:21: error: ‘vector’ has not been declared
                 vector<KeyPoint>& keypoints,
                 ^
/usr/include/opencv2/nonfree/features2d.hpp:77:27: error: expected ‘,’ or ‘...’ before ‘<’ token
                 vector<KeyPoint>& keypoints,
                       ^
/usr/include/opencv2/nonfree/features2d.hpp:76:10: error: ‘void cv::SIFT::operator()(cv::InputArray, cv::InputArray, int) const’ cannot be overloaded
 void operator()(InputArray img, InputArray mask,
      ^
/usr/include/opencv2/nonfree/features2d.hpp:72:10: error: with ‘void cv::SIFT::operator()(cv::InputArray, cv::InputArray, int) const’
 void operator()(InputArray img, InputArray mask,
      ^
/usr/include/opencv2/nonfree/features2d.hpp:81:5: error: ‘AlgorithmInfo’ does not name a type
 AlgorithmInfo* info() const;
 ^
/usr/include/opencv2/nonfree/features2d.hpp:83:49: error: ‘vector’ has not been declared
 void buildGaussianPyramid( const Mat& base, vector<Mat>& pyr, int nOctaves ) const;
                                             ^
/usr/include/opencv2/nonfree/features2d.hpp:83:55: error: expected ‘,’ or ‘...’ before ‘<’ token
 void buildGaussianPyramid( const Mat& base, vector<Mat>& pyr, int nOctaves ) const;
                                                   ^
/usr/include/opencv2/nonfree/features2d.hpp:84:33: error: ‘vector’ does not name a type
 void buildDoGPyramid( const vector<Mat>& pyr, vector<Mat>& dogpyr ) const;
                             ^
/usr/include/opencv2/nonfree/features2d.hpp:84:39: error: expected ‘,’ or ‘...’ before ‘<’ token
 void buildDoGPyramid( const vector<Mat>& pyr, vector<Mat>& dogpyr ) const;
                                   ^
/usr/include/opencv2/nonfree/features2d.hpp:85:39: error: ‘vector’ does not name a type
 void findScaleSpaceExtrema( const vector<Mat>& gauss_pyr, const vector<Mat>& dog_pyr,
                                   ^
/usr/include/opencv2/nonfree/features2d.hpp:85:45: error: expected ‘,’ or ‘...’ before ‘<’ token
 void findScaleSpaceExtrema( const vector<Mat>& gauss_pyr, const vector<Mat>& dog_pyr,
                                         ^
/usr/include/opencv2/nonfree/features2d.hpp:89:40: error: ‘vector’ has not been declared
 void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
                                    ^
/usr/include/opencv2/nonfree/features2d.hpp:89:46: error: expected ‘,’ or ‘...’ before ‘<’ token
 void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
                                          ^
/usr/include/opencv2/nonfree/features2d.hpp:90:41: error: ‘vector’ has not been declared
 void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
                                     ^
/usr/include/opencv2/nonfree/features2d.hpp:90:47: error: expected ‘,’ or ‘...’ before ‘<’ token
 void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
                                           ^
/usr/include/opencv2/nonfree/features2d.hpp:125:28: error: ‘vector’ has not been declared
                 CV_OUT vector<KeyPoint>& keypoints) const;
                        ^
/usr/include/opencv2/nonfree/features2d.hpp:125:34: error: expected ‘,’ or ‘...’ before ‘<’ token
                 CV_OUT vector<KeyPoint>& keypoints) const;
                              ^
In file included from /usr/include/opencv2/nonfree/nonfree.hpp:46:0,
             from panaroma.cpp:7:
/usr/include/opencv2/nonfree/features2d.hpp:128:28: error: ‘vector’ has not been declared
                 CV_OUT vector<KeyPoint>& keypoints,
                        ^
/usr/include/opencv2/nonfree/features2d.hpp:128:34: error: expected ‘,’ or ‘...’ before ‘<’ token
                 CV_OUT vector<KeyPoint>& keypoints,
                              ^
 /usr/include/opencv2/nonfree/features2d.hpp:127:10: error: ‘void cv::SURF::operator()(cv::InputArray, cv::InputArray, int) const’ cannot be overloaded
 void operator()(InputArray img, InputArray mask,
      ^
 In file included from /usr/include/opencv2/nonfree/nonfree.hpp:46:0,
             from panaroma.cpp:7:
/usr/include/opencv2/nonfree/features2d.hpp:124:10: error: with ‘void cv::SURF::operator()(cv::InputArray, cv::InputArray, int) const’
 void operator()(InputArray img, InputArray mask,
      ^
In file included from /usr/include/opencv2/nonfree/nonfree.hpp:46:0,
             from panaroma.cpp:7:
/usr/include/opencv2/nonfree/features2d.hpp:132:5: error: ‘AlgorithmInfo’ does not name a type
 AlgorithmInfo* info() const;
 ^
/usr/include/opencv2/nonfree/features2d.hpp:142:40: error: ‘vector’ has not been declared
 void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
                                    ^
/usr/include/opencv2/nonfree/features2d.hpp:142:46: error: expected ‘,’ or ‘...’ before ‘<’ token
 void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
                                          ^
/usr/include/opencv2/nonfree/features2d.hpp:143:41: error: ‘vector’ has not been declared
 void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
                                     ^
/usr/include/opencv2/nonfree/features2d.hpp:143:47: error: expected ‘,’ or ‘...’ before ‘<’ token
 void computeImpl( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
                                           ^

EDIT 1
问题我实际面临的是,我试图使用的软件包是在开发而不是稳定的版本。我只需要做 git checkout 3.0.0 即可获得稳定的版本。

EDIT 1 So, the issue I was actually facing was that I was trying to use the package which was in development and not stable version. I just had to do git checkout 3.0.0 to get to the stable version.

推荐答案

打开位于/usr/include/opencv2/nonfree/features2d.hpp的文件features2d.hpp
您应该是一个sudo usr来编辑文件。
将vector头文件添加为#include< vector>
然后使用命名空间std;

Open the file features2d.hpp located at /usr/include/opencv2/nonfree/features2d.hpp You should be a sudo usr to edit the file. Add the "vector" header file as #include < vector > and then add using namespace std;

这应该可以解决你的问题。
regards,
Avinash

This should solve your problem. regards, Avinash

这篇关于opencv-3.0.0 ubuntu 14.04“nonfree / nonfree.hpp”构建错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆