2011-12-02 15 views
6

मैं कंप्यूटर विजन से जुड़ी एक परियोजना करना चाहता हूं। अधिकतर पहचान पहचान/पहचान। कुछ शोध के बाद, मैं ओपनसीवी पर वापस आ रहा हूं। लेकिन सभी ट्यूटोरियल 2008 से हैं (मुझे लगता है कि यह थोड़ी देर के लिए बड़ा था)। यह मैक पर पाइथन में संकलित नहीं है। मैं एक्सकोड के बाहर सी ++ फ्रेमवर्क का उपयोग कर रहा हूं, लेकिन ट्यूटोरियल में से कोई भी पुराने काम के रूप में काम नहीं करता है और दस्तावेज जो मैं पार्स कर सकता हूं उससे बेकार है।ओपनसीवी और कंप्यूटर विजन, अब हम कहां खड़े हैं?

क्या मैं कर रहा हूं इसके लिए कोई बेहतर समाधान है, और क्या किसी को ओपनसीवी का उपयोग करने के तरीके सीखने के लिए कोई सुझाव है?

धन्यवाद

+0

O'Reilly से ओपनसीवी पुस्तक आज़माएं? –

+0

जारी किया गया: सितंबर ** 2008 ** - क्षमा करें, '08 से प्रत्येक ट्यूटोरियल काम नहीं करता है। मेरा मानना ​​है कि तब से ढांचा बहुत बदल गया है। और उस पृष्ठ पर एक समीक्षा से: "उस समय पुस्तक अच्छी थी, लेकिन अब ओपनसीवी के रूप में लागू नहीं हुआ है। उन्हें अपनी पुस्तक अपडेट करनी चाहिए।" – switz

+0

ओपनसीवी स्रोत कोड में उदाहरण देखें। – James

उत्तर

6

मुझे ओपनसीवी के साथ शुरू करने में समान समस्याएं आई हैं और मेरे अनुभव से यह वास्तव में इसे सीखने में सबसे बड़ी बाधा है।यहां मेरे लिए क्या काम किया गया है:

  1. यह पुस्तक: "ओपनसीवी 2 कंप्यूटर विजन एप्लिकेशन प्रोग्रामिंग कुकबुक।" यह सबसे अद्यतित पुस्तक है और इसमें विभिन्न कंप्यूटर विजन समस्याओं को हल करने के उदाहरण हैं (आप "अंदरूनी देखो" के साथ अमेज़ॅन पर सामग्री की तालिका देख सकते हैं)। यह वास्तव में मुझे ओपनसीवी में आसानी लाने में मदद करता है और पुस्तकालय कैसे काम करता है इसके साथ सहज महसूस करता है।

  2. जैसा कि दूसरों ने कहा है, नमूने बहुत उपयोगी हैं। किताबों को छोड़कर या केवल संक्षेप में कवर करने वाली चीजों के लिए आप नमूने के माध्यम से आमतौर पर अधिक विस्तृत उदाहरण पा सकते हैं। आप पुस्तक और नमूने के बीच एक ही समस्या को हल करने के विभिन्न तरीकों को भी ढूंढ सकते हैं।

    vector<KeyPoint> keypoints;
    FastFeatureDetector fast(40);
    fast.detect(image, keypoints);

    लेकिन नमूनों में आप (एक और अधिक लचीला तरीका मिलेगा अगर आप चाहते हैं: उदाहरण के लिए, keypoints/सुविधाओं को खोजने के लिए, पुस्तक एक उदाहरण फास्ट सुविधाओं का उपयोग कर से पता चलता

    vector<KeyPoint> keypoints;
    Ptr<FeatureDetector> featureDetector = FeatureDetector::create("FAST");
    :) जो Keypoint उपयोग करने के लिए पता लगाने एल्गोरिथ्म चुनने का विकल्प हैfeatureDetector->detect(image, keypoints);

मेरे अनुभव चीजों से अंत में क्लिक करने के लिए शुरू करने और अधिक विशिष्ट प्रश्न के लिए आप अप करने की तारीख ब्लॉग पर जानकारी या सही StackOverflow पर यहाँ खोजने शुरू करते हैं।

0

सरल जवाब है कि मन में आता है, समझ का एक सा उदाहरण कोड को पढ़ने के लिए, और अगर आपके विचार से काम बाहर की कोशिश करने के लिए है। एपीआई बदलता है, और अधिकांश ट्यूटोरियल ओपनसीवी के पहले संस्करणों के लिए लिखे जाते हैं, और ऐसा लगता है कि कोई भी उन्हें फिर से लिखने के लिए परेशान नहीं है। फिर भी इसके पीछे मूल विचार बदल नहीं रहे हैं। इसलिए यदि आपको अपने प्रश्नों का उत्तर देने वाला एक ट्यूटोरियल मिलता है, लेकिन पुरानी एपीआई में लिखा गया है तो प्रयुक्त कार्यों के आधुनिक प्रतिस्थापन के लिए प्रलेखन देखें। यह आसान और तेज़ नहीं है, लेकिन ऐसा लगता है कि यह काम करता है। यदि आप नवीनतम (वास्तव में 2.3) संस्करण का उपयोग करते हैं, तो मैं 2.1 documntation और 2.3 docs + tutorials दोनों का उपयोग करने का सुझाव देता हूं। आपको नमूनों को भी देखना चाहिए, जो पुस्तकालय के साथ स्थापित किया जाना चाहिए था। दस्तावेजों में उल्लिखित कुछ संरचनाओं और चालों का उपयोग करने के बारे में बहुत सारे संकेत हैं। अंत में, लाइब्रेरी के कोड के अंदर देखने के लिए डरो मत (अगर आपने इसे स्वयं संकलित किया है)। दुर्भाग्यवश, यह एकमात्र स्रोत है जिसे मैं जांचने के लिए जानता हूं उदाहरण के लिए कौन सा कोड Mat ऑब्जेक्ट से मेल खाता है।

2

मुझे कुछ चीज़ें जोड़ने दो। सबसे पहले, मैं आपको आश्वस्त कर सकता हूं कि मैक पर ओपनसीवी काम करने के लिए पाइथन बाइंडिंग। मैं उन्हें हर दिन उपयोग करता हूं।

OpenCV की तरह बहुत से लोग कई कारणों से:

  1. लाइसेंस, अच्छा वाणिज्यिक उत्पादों में एकीकरण के लिए अनुकूल है, आदि
  2. यह एक तकनीकी दृष्टिकोण से काफी अच्छा है। यह आपको कला एल्गोरिदम की स्थिति का संदर्भ कार्यान्वयन देता है।
  3. यह विकल्प (मैटलैब मैं आपको देख रहा हूं) की तुलना में काफी तेजी से होता है।

जीवन में सब कुछ की तरह, यह सही नहीं है:

  1. यह एक चलती लक्ष्य है कि एक सॉफ्टवेयर पुस्तकालय का एक अच्छा उदाहरण है। मेरे पास एक 300 लाइन पायथन प्रोग्राम है जो ओपनसीवी और प्रत्येक कुछ महीनों का उपयोग करता है जब ओपनसीवी का एक नया संस्करण जारी किया जाता है, मुझे नए फ़ंक्शन नाम/कॉलिंग सम्मेलनों आदि को अनुकूलित करने के लिए इसे बदलना होगा। लाइब्रेरी अग्रिम है, एक बहुत, हालांकि यह एक दर्द है कि प्रति वर्ष 3 बार एक ही कार्यक्रम को बदलना है।
  2. इसमें कंप्यूटर सीखने की तरह एक सीखने की वक्र है, यह काफी तकनीकी है और सीखना आसान नहीं है।

छवि प्रसंस्करण टूलबॉक्स के साथ विकल्प (अन्य पेशेवरों और विपक्ष के साथ) MATLAB एक ऐसा उदाहरण है।

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