2013-04-24 8 views
6

मैंने ओपनसीवी-2.4.5 के स्रोत डाउनलोड किए और मैंने ट्यूटोरियल (विंडोज़ के लिए ओपनसीवी साइट पर) के बारे में सब कुछ अपने पुस्तकालयों को स्थापित करने के बारे में बताया। ठीक। मैंने cmc के साथ opencv.sln फ़ाइल बनाई है, फिर मैंने इसे विजुअल स्टूडियो 2010 पेशेवर के साथ खोला और मैं बिल्ड समाधान पर क्लिक करता हूं लेकिन केवल 9 सफल हुआ। 200 में से अधिकांश विफल हुए और tbbd.lib के बारे में अधिकांश त्रुटियां नहीं मिलीं और opencv_core245d.lib LNK1104 त्रुटि के साथ नहीं मिला। मैं इसे कितने दिनों तक हल करने की कोशिश कर रहा हूं। मैंने फाइलों के तरीके दिखाने की कोशिश की है ... कोई भी कृपया मदद कर सकता है? यह मेरे शोध प्रबंध के बारे में है। (के साथ कोई आम भाषा समर्थन का निर्माण)ओपनसीवी 245 पहली बिल्डिंग त्रुटियां

+0

आपके सेमेक कॉन्फ़िगरेशन की तरह लगता है कि आपने इसे टीबीबी लाइब्रेरी (टीबीबी -> थ्रेडिंग बिल्डिंग ब्लॉक) के लिए समर्थन के साथ बनाया है लेकिन आपको यह नहीं मिला है (या तो आपके पास नहीं है यह, या पथ गलत है)। मान लें कि आपने cmake GUI के माध्यम से अपना सेमेक बिल्ड कॉन्फ़िगर किया है, tbb विकल्प को अनचेक करने और अपनी .sln फ़ाइल को पुन: उत्पन्न करने का प्रयास करें – alrikai

+0

धन्यवाद @alrikai लेकिन मैंने ओपनसीवी-2.4.5/डीपी/टीबीबी में टीबीबी जोड़ा .... और मैंने इसे सेमीकेक में अन्य उदाहरणों जैसे ओपेनेक्सर, ईजिन, क्यूटी, क्यूडा, ओपननी प्राइम सेंसर के साथ, नाइटी और स्फिंक्स, क्लैमडब्लस और एफएफटी के साथ अजगर ... और मैंने इनके साथ सेमेक जीयूआई का इस्तेमाल किया। और पथ संपादक –

+0

के साथ tbb का बिन पथ जोड़ें अपनी tbb .lib फ़ाइल का पथ सही है? – alrikai

उत्तर

6

त्वरित उत्तर

मैं ट्यूटोरियल here का उपयोग कर TBB समर्थन के साथ OpenCV संकलन करने में कामयाब रहे।

चश्मा: Visual Studio 2012/7 विन (64 बिट)/OpenCV 2.4.5/CUDA 5

मैं नवीनतम TBB ज़िप डाउनलोड किया है और सेल्सियस के लिए यह निकाला है:/src/OpenCV/DEP (जैसा कि उपरोक्त लिंक ट्यूटोरियल में सुझाया गया है)।

आप CMake में निम्नलिखित TBB सेटिंग्स का उपयोग करने के लिए है (आपकी फ़ाइल पथ के आधार पर अनुकूलन):

TBB_LIB_DIR  :: C:/src/OpenCV/dep/tbb41_20130314oss/lib/intel64/vc11 
TBB_INCLUDE_DIRS :: C:/src/OpenCV/dep/tbb41_20130314oss/include/ 
TBB_STDDEF_PATH :: C:/src/OpenCV/dep/tbb41_20130314oss/include/tbb/tbb_stddef.h 
WITH_TBB   :: checked 
BUILD_TBB   :: unchecked 

अधिक जानकारी

प्रारंभ में, मैं भी CUDA 5 समर्थन के साथ OpenCV स्थापित करना चाहता था , लेकिन ऐसा लगता है कि CUDA 5 VS2012 के साथ असंगत है।

Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_generated_matrix_operations.cu.obj 
nvcc : fatal error : nvcc cannot find a supported cl version. Only MSVC 9.0 and MSVC 10.0 are supported 

अच्छी खबर यह है कि आप VS2010 है, जो, CUDA के साथ इस्तेमाल किया जा सकता का सुझाव दिया के रूप में here उपयोग कर रहे हैं: यह त्रुटि मुझे मिल गया जब OpenCV संकलन है। वीयू2012 को सीयूडीए के साथ परियोजनाएं बनाने के लिए स्थापित किया जा सकता है, लेकिन वीएस2012 के लिए सीयूडीए समर्थन के साथ ओपनसीवी संकलित करने के लिए वर्तमान में कोई रास्ता नहीं है (AFAIK) (अधिक जानकारी के लिए this पढ़ें)।

निष्कर्ष में, जिन लोगों को सीयूडीए समर्थन की आवश्यकता है उन्हें संकलित करना चाहिए और वीएस -2010 के साथ ओपनसीवी का उपयोग करना चाहिए।

इसके अलावा, जब OpenCV संकलन, मैं निम्न त्रुटियों मिला:

error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of '-Zm118' or greater 
fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit 

मैं निर्देशों here इस्तेमाल किया अंत में OpenCV संकलित करने के लिए। मैंने सामान्य गुण> सी/सी ++> कमांड लाइन में अतिरिक्त विकल्प के रूप में /Zm130 को एक संपत्ति शीट बनाया और इसे सभी उत्पन्न ओपनसीवी परियोजनाओं में जोड़ा।

  • CMake विन्यास: http://pastebin.com/8rJZGZ3T
  • आपके संदर्भ के लिए, मैं भी CMake विन्यास और CMakeCache.txt फ़ाइल है कि मैं का उपयोग किया है (CUDA के रूप में मैं VS2012 का उपयोग कर रहा अक्षम किया गया है) देते हैं CMakeCache.txt: http://pastebin.com/A0q8YgJg

उम्मीद है कि यह मदद करता है और अगर आपको किसी भी चरण में विस्तार करने की आवश्यकता है तो कृपया टिप्पणी करें।

+0

मैं इसे @dilgenter आज़माने जा रहा हूं और मैं इसे यहां पोस्ट करूंगा धन्यवाद –

+0

मैंने अपने नए लैपटॉप में ओपनसीवी-मास्टर, ओपनसीवी-2.4.5 और ओपनसीवी-2.4.7 को फिर से स्थापित किया। ओपनसीवी-2.4.7 का इमेड फ़ंक्शन हमेशा शून्य हो गया लेकिन सी-सीवी इमेजलोड ने अच्छी तरह से काम किया और ओपनसीवी-मास्टर का सीवीलोड इमेज सीवीआईमेज लोड नहीं किया था या मुझे कुछ याद आया। लेकिन टीबीबी का डीआईआर होना चाहिए .../bin/ia32 इंटेल 64 नहीं है मेरा ओएस 64-बिट है लेकिन वीएस201x 32-बिट यह मेरी त्रुटि थी। और मुझे सिलाई और जीपीयू त्रुटियां मिल रही हैं और विजुअल स्टूडियो आपके द्वारा बताए गए @ डिल्जेंटर की तरह त्रुटि के बारे में बता रहा है और अब यह अच्छी तरह से काम कर रहा है, लेकिन 2.4.5 अच्छी तरह से मैं यह खोजने की कोशिश करूंगा कि क्यों 2.4.7 की इमेड वापसी शून्य शून्य तत्व । बुन अब मैं बहुत व्यस्त हूं –

7

संक्षिप्त करें

मैं एक अच्छा 15 घंटे बिताए या तो होमवर्क OpenCV का उपयोग समाप्त करने के लिए। उन घंटों में से 14.5 बस इसे ठीक से सेटअप करने में खर्च किए गए थे। मैं लगभग 7 ट्यूटोरियल वीडियो चलाता हूं, कई सेट अप मार्गदर्शिकाएं चलाता हूं, और उसी त्रुटि को हल करने वाले सैकड़ों पदों को पढ़ता हूं। इसलिए मैं समझता हूं कि ओपनसीवी स्थापित करना एक मामूली काम नहीं है और ऐसा करने के लिए कई कदम हैं। तो अगर आप ओपनसीवी का उपयोग करना चाहते हैं तो इसे स्थापित करने के लिए यहां एक सीधा ट्यूटोरियल है।

यह समझना महत्वपूर्ण है कि लिंकिंग के रूप में काम करने के तरीके कैसे काम करते हैं। तीन प्रकार की फाइलें हैं, आपके शीर्षलेख जिन्हें आप शामिल करते हैं, .dlls जिनमें फ़ंक्शंस हैं, और पुस्तकालय जिनमें .dlls में फ़ंक्शंस को कॉल करने के निर्देश हैं। तो यहां, इनपुट लिंकर में निर्भरताओं के रूप में .dlls को जोड़ने के बजाय, हम lib फ़ाइलों को जोड़ने जा रहे हैं। इसके बाद हम एक सिस्टम एनवायरनमेंट वैरिएबल बनाएंगे जो मशीन को बताएगा कि .dll फ़ाइलों को कहां देखना है जब उनकी संबंधित लाइब्रेरी फाइलों का संदर्भ दिया जाता है। हम एक संपत्ति पत्रक तैयार करेंगे ताकि जब हम एक नई परियोजना बनाते हैं, तो हम एक नया जोड़ने के बजाय "मौजूदा संपत्ति पत्रक जोड़ें" पर क्लिक करके हमारी परियोजना में सेटिंग्स जोड़ सकते हैं। इस तरह, हमें इसे फिर से नहीं जाना पड़ेगा।

इन चरणों का बिल्कुल पालन करें और सुनिश्चित दृश्य स्टूडियो बनाने के सतत

नोट से पहले बंद है: जब पाठ कहा टेक्स्ट कॉपी करने के निर्देश के साथ उद्धरण में दी गई है, उद्धरण शामिल नहीं हैं।

  • सबसे पहले, आसान हिस्सा - अपनी वेबसाइट से ओपनसीवी 2.4.5 डाउनलोड करें। http://opencv.org/ और विंडोज के लिए ओपनसीवी पर क्लिक करें। यह OpenCV 2.4.5.exe डाउनलोड करेगा।

OpenCV

  • स्थापित करें डाउनलोड समाप्त, डबल क्लिक करें OpenCV-2.4.5.exe इसे चलाने के लिए है।

  • जब उनसे पूछा गया जहां फ़ाइलें, निकालने के लिए पाठ बॉक्स ino प्रकार: "C: \"

  • C: \ opencv पूरा होने पर बनाया गया है चाहिए। सुनिश्चित करने के लिए वहां नेविगेट करें।

सेटअप पर्यावरण चर

  • Windows 8 उपयोगकर्ता:

    - Right click the bottom left corner of your screen when the start icon pops up. 
    
    - Click "Command Prompt (Admin)" 
    
    - Type "SETX -m OPENCV_DIR C:\opencv\build" and press enter to set the opencv build directory as a System Environment Variable. Wait for the console to give you confirmation that it is set. 
    
    - Right click the bottom left corner of your screen when the "Start" icon pops up. Click System -> Advanced System Settings -> Environment Variables 
    
    - In the "System Variables" list box, under the "Variable" collumn, find "Path". 
    
    - Highlight the "Path" row and click edit. 
    
    - Click in the "Variable Value" text box and hit the "end" key on your keyboard to scroll to the end of the line and add a semicolon. 
    
    - Type the following: "C:\opencv\build\x86\vc10\bin;C:\opencv\build\x86\vc10" and click "OK". This will add the openCV bin directory to the system path. 
    
  • WINDOWS 7 उपयोगकर्ताओं:

    एक ही चरणों का पालन करें। केवल अंतर यह है कि आप कमांड प्रॉम्प्ट और सिस्टम सेटिंग्स कैसे प्राप्त करते हैं। यदि आवश्यक हो तो Google विंडोज 7 पर पर्यावरण चर सेट अप कैसे करें।

सेटअप Visial स्टूडियो

नोट: मैं अति उन्नत वाक्य रचना हाइलाइटिंग है कि जीवन जब सी प्रोग्रामिंग ++ बनाता है इतना आसान की वजह से VS2012 व्यावसायिक सलाह देते हैं। यह संस्करण DreamSpark से मुफ्त में डाउनलोड और स्थापित किया जा सकता है। बस अपने छात्र आईडी के साथ बनाओ और खाता है। हालांकि, वीएस -2010 और वीएस2012 के लिए कदम समान हैं।

  • ओपन दृश्य स्टूडियो

    • पर क्लिक करें "नया प्रोजेक्ट" और "सी ++" का चयन करें "Win32 कंसोल अनुप्रयोग" के अंतर्गत।
  • जब विंडो खुलती है "अगला" पर क्लिक करें, "खाली परियोजना" पर क्लिक करें, और "समाप्त करें" पर क्लिक करें। यह बहुत महत्वपूर्ण है कि आप प्रीम्प्लील्ड हेडर के बिना एक ईएमपीटीई प्रोजेक्ट से शुरू करें।

  • "संपत्ति प्रबंधक" का पता लगाएं। डिफ़ॉल्ट रूप से, यह एक टैब होना चाहिए जिसे कभी-कभी याद करना मुश्किल होता है। वैकल्पिक रूप से इसे टूलबार "व्यू" -> "प्रॉपर्टी मैनेजर" से क्लिक करके एक्सेस किया जा सकता है।

  • राइट क्लिक करें "डीबग | Win32" और "नई परियोजना संपत्ति पत्रक जोड़ें" का चयन करें। इसे "ओपनसीवीप्रॉप" नाम दें और "जोड़ें" पर क्लिक करें।

  • राइट अपनी नई संपत्ति शीट पर क्लिक करें और "गुण" चुनें।

  • बाएं कॉलम से, "सी/सी ++" -> "सामान्य" पर जाएं और दाईं ओर स्थित सूची बॉक्स में, "अतिरिक्त निर्देशिकाएं शामिल करें" का चयन करें और "संपादित करें" पर क्लिक करें।

  • निम्नलिखित तीन निर्देशिका जोड़ें:

    • "$ (OPENCV_DIR) \ में शामिल हैं"

    • "$" $ (OPENCV_DIR) \ \ opencv में शामिल हैं "(OPENCV_DIR) \ include \ opencv2 "

  • ली से फीट कॉलम, "लिंकर" -> "सामान्य" पर जाएं और दाईं ओर स्थित सूची बॉक्स में, "अतिरिक्त लाइब्रेरी निर्देशिकाएं" चुनें और "संपादित करें" पर क्लिक करें।

  • निम्न निर्देशिका जोड़ें:

    • "$ (OPENCV_DIR) \ 86 \ VC10 \ lib"
  • बाएँ स्तंभ से, "लिंकर" पर जाएं -> "इनपुट" और दाईं ओर स्थित सूची बॉक्स में, "अतिरिक्त निर्भरता" का चयन करें और "संपादित करें" पर क्लिक करें।

  • depedencies में निम्न .lib फ़ाइलें जोड़ें। आप इसे संपादन बॉक्स में कॉपी और पेस्ट करके ऐसा कर सकते हैं। मैंने जानबूझकर बुलेटपॉइंट को शामिल नहीं किया है ताकि आप इन्हें पेस्ट कॉपी करना आसान बना सकें।

    opencv_core245d.lib opencv_imgproc245d.lib opencv_highgui245d.lib opencv_ml245d.lib opencv_video245d.lib opencv_features2d245d.lib opencv_calib3d245d.lib opencv_objdetect245d.lib opencv_contrib245d.lib opencv_legacy245d.lib opencv_flann245d।lib

नोट: यदि रिलीज के लिए भवन, ये चरण समान हैं। हालांकि, इन फ़ाइलों को कॉपी और पेस्ट करते समय, उनमें से प्रत्येक के अंत से 'डी' हटा दें। 'डी' इंगित करता है कि यह एक रिलीज लाइब्रेरी है और रिलीज के लिए लिंक। डीएलएल।

  • बधाई हो! मुश्किल हिस्सा लगभग पूरा हो गया है! खिड़की बंद करने के लिए ओके पर क्लिक करें।

बनाना और हमारे समाधान एक्सप्लोरर के लिए पर एक टेस्ट परियोजना

  • हेड का निर्माण। इसे "व्यू" के माध्यम से टूलबार से केंद्रित किया जा सकता है -> "समाधान एक्सप्लोरर"

  • राइट क्लिक करें "स्रोत फ़ाइलें" और "जोड़ें" -> "नया आइटम" चुनें।

  • "सी ++ फ़ाइल (.cpp)" चुनें और फ़ाइल "main.cpp" का नाम दें। "जोड़ें" पर क्लिक करें।

  • निम्न प्रोग्राम को कॉपी और पेस्ट करें और अपने कीबोर्ड पर "एफ 7" दबाएं और यह देखने के लिए कि क्या आपको "सफलता प्राप्त करें" संदेश मिलता है या नहीं, अपनी स्क्रीन के निचले बाएं कोने को देखें। यदि ऐसा है, तो संकलन और चलाने से पहले केवल एक कदम शेष! यदि नहीं, तो कृपया अपने चरणों को पुनः प्राप्त करें, या नीचे टिप्पणी करें और शायद मैं मदद कर सकता हूं।

 
    #include &ltopencv\cv.h> 
    #include &ltopencv\highgui.h> 

    int main(int argc, char* argv) 
    { // openCV .image object 
     cv::Mat inputImage; 

     //Create a Window 
     cv::namedWindow("window",1); 

     // Initialize our image. 
     inputImage = cv::imread("Lenna.png"); 

     // Always check to make sure that image has data. 
     if(inputImage.empty()) 
     { 
      std::cout << "Image Failed to Load."; 
      return -1; 
     } 
     else 
     { 
      // All is well, display me. 
      cv::imshow("window",inputImage); 

      // Wait for user to press a key to exit. 
      cvWaitKey(0); 
     } 

     return 0; 
    } 
  • तो निर्माण सफल रहा, तो वह सब छोड़ दिया है अपने फ़ोल्डर में चित्र जोड़ना है। प्लेसमेंट बहुत महत्वपूर्ण है। मैंने डायरेक्टॉय की प्रतिलिपि बनाई है जिसे मैंने अपना रखा है। उसी निर्देशिका पैटर्न का पालन करें।

    • "C: \ Users \ जोश \ दस्तावेज़ \ Visual Studio 2012 \ परियोजनाओं \ ConsoleApplication3 \ ConsoleApplication3 \ Lenna.png"
  • अब "Ctrl + F5" हिट बनाने के लिए, संकलन, और खिड़की में अपनी छवि का निरीक्षण करने के लिए भागो !!

* यदि आप एक वेब कैमरा है *

  • कॉपी और अगर OpenCV एक छवि जोड़ने के लिए आवश्यक जा रहा है बिना काम कर रहा है की जाँच करने के लिए निम्न कोड पेस्ट करें। यह उपयोगी है क्योंकि अगर उपर्युक्त कोड काम नहीं करता है, लेकिन यह कोड करता है, तो आप जानते हैं कि आप छवि को गलत फ़ोल्डर में डालते हैं।
 
    #include 
    #include 

    int main(int argc, char* argv) 
    { // openCV .image object 
     cv::Mat image; 

     //Create a Window 
     cv::namedWindow("window",1); 

     // Create the capture object. 
     cv::VideoCapture device; 

     // Open your webcam. 
     device.open(0); 

     while (1) 
     { 
      // Read data from your device and store it to the image frame. 
      device >> image; 

      // Always check to make sure that image has data. 
      if(image.empty()) 
      { 
       std::cout<< "Image Failed to Load."; 
       return -1; 
      } 
      else 
      { 
       // All is well, display me. 
       cv::imshow("window",image); 

       // Wait for user to press a key to exit. 
       cvWaitKey(33); 
      } 
     } 

     return 0; 
    } 

मुबारक कोडिंग !! अगर कुछ काम नहीं करता है तो मुझे बताएं ताकि मैं इसे ठीक कर सकूं!

+0

धन्यवाद जोश सैंडर्स और यान्कीविस्की। मैं ओपनसीवी का उपयोग कर रहा हूं, टीबीबी के बिना संकलित, ओपननी –

+0

कोई समस्या नहीं! क्या आप इनमें से एक को स्वीकार किए गए उत्तर के रूप में चुन सकते हैं? –

0

मैंने अपने नए लैपटॉप में ओपनसीवी-मास्टर, ओपनसीवी-2.4.5 और ओपनसीवी-2.4.7 फिर से स्थापित किया। ओपनसीवी-2.4.7 का इमेड फ़ंक्शन हमेशा शून्य हो गया लेकिन सी-सीवी इमेजलोड ने अच्छी तरह से काम किया और ओपनसीवी-मास्टर का सीवीलोड इमेज सीवीआईमेज लोड नहीं किया था या मुझे कुछ याद आया। लेकिन टीबीबी का डीआईआर होना चाहिए .../bin/ia32 इंटेल 64 नहीं है मेरा ओएस 64-बिट है लेकिन वीएस201x 32-बिट यह मेरी त्रुटि थी।और मुझे सिलाई और जीपीयू त्रुटियां मिल रही हैं और दृश्य स्टूडियो त्रुटि के बारे में बता रहा है और यह आम तौर पर स्मृति आवंटन सीमा त्रुटि है और मैंने आपके कहा @dilgenter की तरह ही किया है और अब यह अच्छी तरह से काम कर रहा है, लेकिन 2.4.5 अच्छी तरह से और python_d। lib त्रुटि हो सकती है यह डीबग मोड में कोई समस्या नहीं है मैंने इसे कई फ़ोरम साइटों से पढ़ा है। मैं यह पता लगाने की कोशिश करूंगा कि क्यों 2.4.7 की इमेड वापस शून्य मट तत्व लौट रही है। लेकिन अब मैं बहुत व्यस्त हूं और यह

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