2012-03-19 8 views
5

पर मिनीजीडब्ल्यू जीसीसी/जी ++ के साथ ओपनसीवी 2.3.1 प्रोग्राम संकलित करना एक सप्ताह के लिए मैं ओपनसीवी कार्यक्रमों को संकलित करने के लिए संघर्ष कर रहा हूं। मैंने इंटरनेट पर जो कुछ भी संभवतः खोजा है, मैंने कोशिश की है।विंडोज 7 64 बिट

मैंने जो किया वह है: मैंने OpenCV-2.3.1-win-superpack.exe डाउनलोड किया है और this official installation guide का पालन किया है।

सीएमके (gui) में मेरा स्रोत था: डी: \ opencv और गंतव्य का निर्माण था: सी: \ opencv।

मैंने सी: \ opencv \ install \ bin; सी: \ opencv \ bin को अपने सिस्टम के पैथ चर में भी जोड़ा है।

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

मैंने इंटरनेट पर पाए गए विभिन्न जीसीसी/जी ++ पैरामीटर और आईआई-एल विकल्पों के साथ खेलने वाले दिनों की कोशिश की है, संकलक कभी भी OpenCV फ़ंक्शंस या संरचनाओं को नहीं ढूंढ सकता है।

क्या मैं संकलित करने के लिए कोशिश कर रहा हूँ:

#include <stdlib.h> 
#include <stdio.h> 
#include <math.h> 
#include <cv.h> 
#include <highgui.h> 

int main(int argc, char *argv[]) 
{ 
    // Nothing but create a window 
    cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); 
    cvMoveWindow("mainWin", 100, 100); 
    cvWaitKey(0); 
    return 0; 
} 

त्रुटि:

इनपुट:

gcc test.c -o test -I"C:\opencv\install\include" -I"C:\opencv\install\include\opencv" -L"C:\opencv\install\bin" 

आउटपुट:

...\ccK4MfHv.o:test.c:(.text+0xa0b): undefined reference to `cvFree_' 

या साथ जी ++:

इनपुट:

g++ test.c -o test -I"C:\opencv\install\include" -I"C:\opencv\install\include\opencv" -L"C:\opencv\install\bin" 

आउटपुट:

...\ccXCTKa1.o:test.c:(.text+0x1e): undefined reference to `cvNamedWindow' 

साइड नोट: VS2005 में मैं एक ही त्रुटि मिलती है संकलित करने के लिए कोशिश कर रहा।

आपके समय के लिए धन्यवाद!

उत्तर

0

आप निर्देशिका, C:\opencv\install\bin, gcc/g++ कमांड लाइन पर पुस्तकालयों का पता लगाने की है, लेकिन मुझे लगता है कि तुम भी रूप में अच्छी तरह लिंकर इनपुट के रूप में उपयोग करने के लिए पुस्तकालयों का उल्लेख करना होगा। मुझे यकीन है कि क्या पुस्तकालयों OpenCV वितरण का हिस्सा हैं नहीं कर रहा हूँ, लेकिन अनुदेश पेज से लिंक पर उदाहरण के द्वारा जा रहा है, एक हो सकता है:

-lopencv_calib3d220.dll 

आप शायद एक या अधिक अन्य लोगों को जोड़ना होगा (C:\opencv\install\bin निर्देशिका में नाम पैटर्न lib*.a का पालन करें - या शायद कुछ अन्य lib निर्देशिका जो आपको -L विकल्प में गुज़रना चाहिए)।

+0

देरी के लिए खेद है। मैंने सब कुछ करने की कोशिश की है और यह अभी भी संकलित नहीं होगा। मैं सी/सी ++ के बजाय पायथन में स्थानांतरित हो गया हूं और अब सबकुछ काम करता है। सुझाव विचार के लिए धन्यवाद! –

5

मामले में किसी और को इस समस्या को हल करने की जरूरत है, यहाँ है कि कैसे मैं Windows में संकलित करने के लिए 7 x64 MinGW, MSYS, और CMake का उपयोग कर तैनात OpenCV/highgui नमूना कोड मिला: स्रोत से

  1. निर्माण OpenCV मिनजीडब्ल्यू/एमएसवाईएस/सीएमके का उपयोग करना।ऐसा इसलिए है क्योंकि मुझे MinGW/MSYS/Windows 7 x64 में ठीक से लिंक करने के लिए OpenCV-win-SuperPack में MinGW संकलित संस्करण नहीं मिला।

    पूर्ण संदर्भ के लिए, मैं कैसे OpenCV संकलित है:

    • सुनिश्चित करें कि आप एक अप-टू-डेट CMake (v2.6 या बाद में) और MinGW कर (जीसीसी, जी के साथ ++ और MSYS विकल्प) स्थापित
    • यदि आप नया क्यूटी-आधारित ओपनसीवी हाईगुई फ्रंट-एंड चाहते हैं, तो आपको क्यूटी 4 (एसडीके) स्थापित करने की आवश्यकता होगी। , इसलिए वहाँ/opencv:
    • डाउनलोड एक OpenCV स्रोत/SUPERPACK संस्करण 2.2 या बाद में
    • [OPENCV_SOURCE_DIR] (मैं सी में यह डाल करने के लिए सामग्री को अनज़िप (मैं OpenCV-2.3.1-जीत superpack.exe प्रयुक्त) सेल्सियस पर एक फ़ाइल होना चाहिए:/opencv/उदाहरण के लिए README)
    • कहीं और एक [OPENCV_BUILD_DIR] निर्देशिका बनाने (मैं सी का प्रयोग किया:/opencv/निर्माण/MinGW)
    • CMake-जीयूआई उपकरण का उपयोग, स्रोत निर्देशिका निर्दिष्ट [OPENCV_SOURCE_DIR] के रूप में, निर्माण निर्देशिका [OPENCV_BUILD_DIR] के रूप में, और "कॉन्फ़िगर करें" पर क्लिक करें।
    • आप चाहते हो सकता है/विकल्प tweak जाने की जरूरत है एक बार
    • (जैसे मैं टिक "क्यूटी" और "क्यूटी-ओपन" प्रविष्टियों, तो क्लिक किया फिर "कॉन्फ़िगर करें", तो qmake निष्पादन के लिए पथ प्रदान करने के लिए किया था) आप OpenCV कॉन्फ़िगर करना समाप्त कर दिया है, एक MSYS टर्मिनल में "उत्पन्न"
    • क्लिक करें, [OPENCV_BUILD_DIR] ब्राउज़ करें, और कोड के निर्माण के लिए "बनाना" चलाने के एक बार ठीक से बनाया गया है
    • (इसमें कुछ समय लग सकता है), चलाएं "इंस्टॉल करें", जो निर्मित कोड/लाइब्रेरी/डीआईआर को [OPENCV_BUILD_DIR]/इंस्टॉल फ़ोल्डर में एकत्र करता है (या सीएमके-जीयूआई उपकरण का उपयोग करते समय संबंधित विकल्प बदलते हैं तो एक अलग फ़ोल्डर)
    • पाथ पर्यावरण परिवर्तक में [OPENCV_BUILD_DIR]/इंस्टॉल/बिन फ़ोल्डर जोड़ें। यदि आपको यह नहीं पता कि यह कैसे करना है, तो मैं पथ संपादक जीयूआई उपकरण का उपयोग करने की सलाह दूंगा।
    • यदि आप क्यूटी का उपयोग करते हैं, तो आपको पाथ पर्यावरण चर में क्यूटी एसडीके के बिन फ़ोल्डर को भी रखना होगा। यह वह फ़ोल्डर है जिसमें qmake.exe शामिल है।
  2. निम्नलिखित नमूना कोड test.c. नामक फ़ाइल में डाल दें। मैंने ओपनसीवी v2.2 और ऊपर के साथ संगत बनाने के लिए थोड़ा सा संशोधित किया।

    #include <stdlib.h> 
    #include <stdio.h> 
    #include <math.h> 
    #include <opencv/cv.h> 
    #include <opencv/highgui.h> 
    
    int main(int argc, char *argv[]) 
    { 
        // Nothing but create a window 
        cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); 
        cvMoveWindow("mainWin", 100, 100); 
        cvWaitKey(0); 
        return 0; 
    } 
    
  3. एक MSYS टर्मिनल में

    , फ़ोल्डर जहाँ आप test.c डाल करने के लिए ब्राउज़ करें, और चलाएँ:

    gcc -o test -I"[OPENCV_BUILD_DIR]/install/include" test.c \ 
        -L"[OPENCV_BUILD_DIR]/install/lib" \ 
        -lopencv_core[OPENCV_VERSION] \ 
        -lopencv_imgproc[OPENCV_VERSION] \ 
        -lopencv_highgui[OPENCV_VERSION] 
    

    तो मेरे मामले में:

    gcc -o test -I"/c/opencv/build/mingw/install/include" test.c \ 
        -L"/c/opencv/build/mingw/install/lib" \ 
        -lopencv_core231 
        -lopencv_imgproc231 
        -lopencv_highgui231 
    

पथ संपादक: http://www.redfernplace.com/software-projects/patheditor/

+0

लिनक्स उपयोगकर्ताओं के लिए एक नोट। ओपनसीवी का एक नया संस्करण आपके रेपो में पाया जा सकता है, स्रोत डाउनलोड करने और उन्हें बनाने की आवश्यकता नहीं हो सकती है। मेरा संकलन आदेश निम्न है: 'gcc main.c -lopencv_core -lopencv_imgproc -lopencv_highgui -lm'। जैसा कि आप देखते हैं, कोई पिछला अंक आवश्यक नहीं है। –

+0

ओमे चरण गुम है: सीएमके में कॉन्फ़िगरेशन के दौरान क्या चुना जाना चाहिए? एमएसवाईएस मेकफ़ाइल? MinGW मेकफ़ाइल? –