Thursday, 15 August 2013

OpenCV c++ assertion failed <i < 0> in cv::_InputArray::getMat -


  #include & lt; opencv2 / core / core.hpp & gt; #include & lt; opencv2 / imgproc / imgproc.hpp & gt; #include & lt; opencv2 / highgui / highgui.hpp & gt; #include & lt; opencv2 / video / background_segm.hpp & gt; # शामिल करें & lt; iostream & gt; # शामिल & lt; windows.h & gt; नामस्थान cv का उपयोग करना; नेमस्पेस एसटीडी का उपयोग करना; // आरंभिक न्यूनतम और अधिकतम एचएसवी फिल्टर मान // यह ट्रैकबर्स का उपयोग करके परिवर्तित किया जाएगा Mat Src; चट एचएसवी; मैट रोइ; चटाई रेंज; चटाई टूट गई; Mat ग्रे; इंट थ्रेश = 100; Int max_thresh = 255; / ** @ फ़ंक्शन मुख्य * / इंट मुख्य (इंट आर्जैक, चार ** argv) {createTrackbars (); वीडियो कैप्चर कैप (0); // डिफॉल्ट कैमरा खोलें अगर (! Cap.isOpened ()) // जांचें कि क्या हम वापसी -1 सफल हुए हैं; नामांकित विन्डो ("पृष्ठभूमि", 1); इंट प्रतीक्षा टाइम = 50; इंट काउंटर = 101; इंट रोली = 20; इंट roiTop = 50; इंट roiRight = 200; इंट आरिबॉटम = 200; रीट्र आरआरओई = रीकट (रोइलाफ्ट, रॉयोपॉप, रोइराइट, रॉयबॉटम); चटाई पृष्ठभूमि; कैप & gt; & gt; पृष्ठभूमि; पृष्ठभूमि = पृष्ठभूमि (आरआरओई); // cvtColor (पृष्ठभूमि, पृष्ठभूमि, CV_BGR2HSV); // imshow ("पृष्ठभूमि", पृष्ठभूमि); वेक्टर के & lt; वेक्टर & LT; प्वाइंट & gt; & Gt; आकृति; वेक्टर & lt; vector & lt; सीवी :: प्वाइंट & gt; & gt; पतवार (1); वेक्टर के & lt; Vec4i & gt; पदानुक्रम; वेक्टर के & lt; CvConvexityDefect & gt; दोष के; जबकि (सच) {कैप & gt; & gt; src; // रुचि के क्षेत्र बनाएँ। मट आईआरआईआई = एसआरसीक्लोन () (आरआरओई); चटाई iRoiSRC = src (आरआरओई); // वहां एक आयताकार बनाएं आयत (स्रोत, आरआरओआई, स्केलर (255, 128, 0), 1, 8, 0); // imshow ("roi", iRoi); // स्थैतिक पृष्ठभूमि को घटाना Absdiff (iRoi, पृष्ठभूमि, iRoi); // imshow ("diff", iRoi); // इसे ग्रेस्केल में कनवर्ट करें और इसे थ्रेसहोल्ड करें CvtColor (iRoi, iRoi, सीवी_BGR2GRAY); थ्रेशोल्ड (आईरोइ, ग्रे, 15, 255, सीवी_ DHRESH_BINARY); // एक समापन प्रदर्शन करें चटाई erodeElement = getStructuringElement (MORPH_ELLIPSE, आकार (erodeSize, erodeSize)); चटाई एलेमेंट = मिलनस्ट्रेटिंग एलेमेंट (एमओआरपीएच_आईएलआईपीईई, साइज (फैलाइएट साइज़, फैलाइएट साइज़)); (इंट इंडेक्स = 0; इंडेक्स एंड लेफ्टिनम; लूप एमाउंट; इंडेक्स ++) के लिए (इरोड (ग्रे, ग्रे, एरोड एलेमेंट); फैलाना (ग्रे, ग्रे, एलेमेंट पतला); } // imshow ("श्रेणी", ग्रे); // प्रतिरूप खोजें FindContours (ग्रे, आकृति, पदानुक्रम, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, बिंदु (0, 0)); // सबसे बड़ा समोच्च चुनें इंट सबसे बड़ा सेंसर इंडेक्स = 0; Int बड़ाएरिया = 0; के लिए (int i = 0; i & lt; contours.size (); i ++) {if (contours [i]। आकार ()> सबसे बड़ा एरेया) {सबसे बड़े एरे = आकृतियाँ [i]। आकार (); सबसे बड़ा कंटूर इंडेक्स = i; }} वेक्टर & lt; int & gt; hullsI; वेक्टर के & lt; प्वाइंट & gt; hullsP; वेक्टर के & lt; Vec4i & gt; दोष के; // उत्तल पतवार खोजें If (contours.size () & gt; 0) {convexHull (रूपरेखा [सबसे बड़ा कॉंटोर इंडैक्स], hulls I, true, true); ConvexHull (समोच्च [सबसे बड़ा कॉन्टोर इंडैक्स], hullsP, सच है, सच); } // उत्थान दोष मिल If (contours.size () & gt; 0) {if (contours [biggestContourIndex]। आकार ()> 3) {convexityDefects (contours [सबसे बड़ा कॉंटोर इंडैक्स], hullsI, दोष); }} // सबसे बड़ा समोच्च और उसके उत्तल पतवार को ड्रा करें स्केलर रंगऑन = स्केलर (255, 128, 0); स्केलर रंग दो = स्केलर (0, 0, 255); If (contours.size ()> gt; {drawContours (iRoiSRC, contours, सबसे बड़ा कॉंटोर इंडेक्स, रंगीन, 2, 8, पदानुक्रम, 0, बिंदु ()); ड्रा कैंटर्स (आईआरआईएसआरसी, हल्प्स पी, 0, रंग दो, 1, 8, वेक्टर & lt; Vec4i & gt; (), 0, प्वाइंट ()); आयत (iRoiSRC, बाउंडिंगराइट (प्रतिरूप [सबसे बड़ा कॉन्टोर इंडैक्स]), स्केलर (0, 255, 0), 1, 8, 0); } Imshow ("src", src); अगर (इंतजार करें (प्रतीक्षा समय) & gt; = 0) तोड़; } वापसी (0); }  

स्क्रीन के ऊपरी भाग में एक आयताकार होता है, जहां एक बार मैं उसे पकड़ कर एक बार पहचाना जाएगा।

मुझे जो त्रुटि मिलती है वह पहले drawContours पर दिखाई देती है। कंसोल द्वारा मुझे पूरी त्रुटि दी गई है: OpenCV त्रुटि: प्रविष्टि विफल & lt; i & lt; 0 & gt; Cv :: _ InputArray :: getMat, फ़ाइल C: \ buildslave64 \ win64_amdoc1 \ 2_4_PackSlave-win64-vc11- साझा \ opencv \ modules \ core \ src \ matrix.cpp, पंक्ति 963

मैं स्टेक ओवरफ्लो सहित कई साइटों पर एक समाधान के लिए बड़े पैमाने पर खोज कर रहा हूं, लेकिन समाधान में से कोई भी काम नहीं कर रहा है।

किसी भी मदद की सराहना की जाएगी।

मैं विज़ुअल स्टूडियो 2013 का उपयोग करता हूं OpenCV-2.4.10 के साथ

कनवर्टिंग vector & lt; CvConvexityDefect & gt; दोष, एक बिंदु के लिए चाल को लग रहा था


1 comment: