2012-03-26 3 views
7

मैं परेशानी है के साथ Eigen लाइब्रेरी का उपयोग करना।<strong>सी ++</strong> में <strong>OpenCV</strong> आवेदन के साथ <strong>Eigen3</strong> लाइब्रेरी का उपयोग करने में OpenCV 2.3.1

sudo apt-get install libeigen3-dev 

मैं संकलन और नमूना का उपयोग Eigen3 अनुप्रयोगों (Eigen3 पुस्तकालय स्थापित किया गया है और यह काम करता है) जब मैं निम्न आदेश का उपयोग संकलित करने के लिए कर रहा हूँ: मैं निम्न आदेश का उपयोग कर मेरी Ubuntu पर Eigen3 पुस्तकालय स्थापित किया है ।

g++ -I/usr/include/eigen3 Eig.cpp -o Eig 

मैं ओपनसीवी के साथ स्थापित ईजिन लाइब्रेरी का उपयोग करना चाहता हूं।

मैं निम्नलिखित झंडे के साथ 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; 

हालांकि, जब मैं सामान्य रूप से 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 कोड निम्न हेडर और नाम स्थान में शामिल निम्न त्रुटि:

In file included from Read.cpp:6: 
/usr/local/include/opencv2/core/eigen.hpp:54: error: expected ‘,’ or ‘...’ before ‘::’ token 
/usr/local/include/opencv2/core/eigen.hpp: In function ‘void cv::eigen2cv(int)’: 
/usr/local/include/opencv2/core/eigen.hpp:56: error: ‘src’ was not declared in this scope 
/usr/local/include/opencv2/core/eigen.hpp:56: error: ‘Eigen’ is not a class or namespace 
/usr/local/include/opencv2/core/eigen.hpp:60: error: ‘dst’ was not declared in this scope 
/usr/local/include/opencv2/core/eigen.hpp:66: error: ‘dst’ was not declared in this scope 

मैं इस समस्या को कैसे हल करूं?

+0

क्या आप अपने ओपनसीवी एप्लिकेशन में '-I/usr/include/eigen3' भूल गए थे? –

+0

नहीं। मैं अपने ओपनसीवी एप्लिकेशन को निम्नलिखित कमांड के साथ संकलित कर रहा हूं: 'g ++ -I/usr/include/eigen3 -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann जी Read.cpp Read' – garak

उत्तर

7

मैं सिर्फ सभी thats OpenCV हेडर से पहले

#include <Eigen/Dense> 

शामिल करने के लिए किया था। मैंने उन्हें इजेन लिब हेडर और ओपनसीवी लिब हेडर समेत संकलित किया।

1

सबसे पहले मैं यह जांच दूंगा कि ईजिन में दिशानिर्देश शामिल हैं। आप एक CMakeList.txt का उपयोग ऐसा करने के लिए कर सकते हैं (और आप cmake कार्यों का उपयोग करना चाहिए संकलक झंडे के बजाय पुस्तकालयों के लिए हेडर और लिंक को खोजने के लिए)

इसके बाद आप नामस्थान का उपयोग कर दूर करने के लिए कोशिश कर सकते

using namespace cv; 
    using namespace std; 
    using namespace Eigen; 
+0

-ओ मुझे लगता है कि Eigen3 पुस्तकालय हेडर पर अपने स्थान पर हैं देखने के लिए कर रहा हूँ/usr/शामिल/eigen3 निर्देशिका और मैं उनका उपयोग करने में सक्षम हूं। क्या आप कृपया सीएमके लिस्ट.txt का उपयोग करने या मुझे एक लिंक पर निर्देशित करने के बारे में विस्तार से बता सकते हैं? – garak

संबंधित मुद्दे