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
中的两个文件夹 opencv
和 opencv2
的名称来修复它。现在,编译器不再使用 ROS 的 OpenCV,而是我安装的那个正在解决我的问题。
同样,我认为这不是应该的做法,所以如果有人有更好的想法,请告诉我!
我正在尝试在 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
中的两个文件夹 opencv
和 opencv2
的名称来修复它。现在,编译器不再使用 ROS 的 OpenCV,而是我安装的那个正在解决我的问题。
同样,我认为这不是应该的做法,所以如果有人有更好的想法,请告诉我!