C++ 在OpenCV 2.3.1中使用特征库

C++ 在OpenCV 2.3.1中使用特征库,c++,opencv,eigen,C++,Opencv,Eigen,我在C++中使用Eigen3库和OpenCV应用程序时遇到问题。 我已使用以下命令在我的Ubuntu上安装了Egen3库: sudo apt-get install libeigen3-dev 当我使用以下命令进行编译时,我能够编译并使用示例Eigen3应用程序(Eigen3库已安装,并且可以正常工作) g++ -I/usr/include/eigen3 Eig.cpp -o Eig 我想将已安装的Egen库与OpenCV一起使用 我使用以下标志编译了OpenCV源代码: cmake -D

我在C++中使用Eigen3库和OpenCV应用程序时遇到问题。 我已使用以下命令在我的Ubuntu上安装了Egen3库:

sudo apt-get install libeigen3-dev
当我使用以下命令进行编译时,我能够编译并使用示例Eigen3应用程序(Eigen3库已安装,并且可以正常工作)

g++ -I/usr/include/eigen3 Eig.cpp -o Eig
我想将已安装的Egen库与OpenCV一起使用

我使用以下标志编译了OpenCV源代码:

cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON USE_EIGEN=/usr/include/eigen3 ..
我的OpenCV代码包括以下标题和命名空间:

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <assert.h>
#include <opencv2/core/eigen.hpp>

using namespace cv;
using namespace std;
using namespace Eigen;

如何解决这个问题?

首先,我要仔细检查是否找到了本征包含方向。 您可以使用CMakeList.txt来执行此操作(并且您应该使用cmake函数来查找头并链接到库,而不是编译器标志)

接下来,您可以尝试使用名称空间删除

    using namespace cv;
    using namespace std;
    using namespace Eigen;
我只需要包括

#include <Eigen/Dense>
#包括

在包含OpenCV标题之前,仅此而已。我通过包含eigenlib头和opencvlib头来编译它们

您是否忘记了OpenCV应用程序中的
-I/usr/include/eigen3
?否。我正在使用以下命令编译OpenCV应用程序:
g++-I/usr/include/eigen3-I/usr/local/include/OpenCV-I/usr/local/include-L/usr/local/lib-lopencv\u core-lopencv\u imgproc-lopencv\u highgui-lopencv\u-lopencv-lopencv\u-highgui-lopencv-ml-lopencv\u video-lopencv\u feature2d-lopencv_calib3d-lopencv_objdetect-lopencv_contrib-lopencv_legacy-lopencv_flann-g Read.cpp-o Read
我可以看到egen3库头在/usr/include/egen3目录中,我可以使用它们。你能详细说明如何使用CMakeList.txt或直接给我一个链接吗?
#include <Eigen/Dense>