nonfree/feature2d.hpp 的 OpenCV 编译错误

OpenCV compiling error with nonfree/feature2d.hpp

我正在尝试在 Ubuntu 14.04 下使用 catkin_make 在 ROS indigo 中编译 C++ 代码。我收到以下错误:

/usr/local/include/opencv2/nonfree/features2d.hpp:73:21: error: ‘vector’ has not been declared
                     vector<KeyPoint>& keypoints) const;
                     ^
/usr/local/include/opencv2/nonfree/features2d.hpp:73:27: error: expected ‘,’ or ‘...’ before ‘<’ token
                     vector<KeyPoint>& keypoints) const;
                           ^
/usr/local/include/opencv2/nonfree/features2d.hpp:77:21: error: ‘vector’ has not been declared
                     vector<KeyPoint>& keypoints,
                     ^
/usr/local/include/opencv2/nonfree/features2d.hpp:77:27: error: expected ‘,’ or ‘...’ before ‘<’ token
                     vector<KeyPoint>& keypoints,

有人知道问题出在哪里吗?请注意,此错误发生在 OpenCV 的 feature2d.hpp 中(因此它不是我制作的文件)。我已经尝试重新安装 OpenCV 和 ROS,但这并没有解决错误。

如果有人知道如何解决这个问题,我将不胜感激。

谢谢,

编辑:这是 CMakeLists.txt:

cmake_minimum_required (VERSION 2.8.3)
project (test)
set (test_VERSION "1.0.0")

find_package( OpenCV REQUIRED )         

if ( NOT OpenCV_FOUND )
  message(FATAL_ERROR "Package OpenCV required, but not found!")
endif( NOT OpenCV_FOUND )

find_package( Eigen3 REQUIRED )         

include_directories(
  ${EIGEN3_INCLUDE_DIR}             
  ${CMAKE_CURRENT_SOURCE_DIR}/include
  ${OpenCV_INCLUDE_DIRS}
)

set (SOURCE
  src/test.cpp)

add_library (test ${SOURCE})
set_target_properties (test PROPERTIES
  COMPILE_FLAGS "-std=c++11")

target_link_libraries( test ${OpenCV_LIBS} ${EIGEN3_LIBRARY_DIRS})

尝试在包含 opencv2 之前编写:

#include <vector>
using namespace std;

我有点修复了它,但我想这不是正确的方法:

ROS 已经带有 OpenCV 版本。在我的电脑上,我还安装了一个单独的较新的 OpenCV 版本。我通过更改目录 /opt/ros/indigo/include 中的两个文件夹 opencvopencv2 的名称来修复它。现在,编译器不再使用 ROS 的 OpenCV,而是我安装的那个正在解决我的问题。

同样,我认为这不是应该的做法,所以如果有人有更好的想法,请告诉我!