OpenCV

2012-07-24 15 views
9

साथ एक वस्तु की क्षेत्र की गणना मैं/एक ब्लॉब के क्षेत्र ग्रेस्केल चित्र में एक वस्तु की गणना करनी है (चटाई के रूप में यह लोड हो रहा है, IplImage के रूप में नहीं) OpenCV का उपयोग कर। मैंने सोचा कि किनारों के निर्देशांक प्राप्त करने के लिए एक अच्छा विचार होगा (किनारों की संख्या ऑब्जेक्ट में फॉर्म ऑब्जेक्ट को बदलें) या समोच्च के सभी निर्देशांक प्राप्त करने के लिए और फिर मेरे ऑब्जेक्ट के क्षेत्र की गणना करने के लिए contourArea() का उपयोग करें।OpenCV

मैं सभी शोर को नष्ट कर दिया और findContours() (सी ++ में प्रोग्रामिंग) का उपयोग करके कुछ अच्छा और संतोषजनक आकृति मिला है।

findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy,int mode, int method, Point offset=Point()); 

अब मैं उस परम contours पहले से ही मेरे वस्तु के सभी आकृति के निर्देशांक का मालिक समझने के लिए मिला है। क्या मैने इसे सही समझा?

यदि हां, तो उन्हें एक्सेस करने का कोई तरीका है?

और यदि नहीं, तो मैं किसी भी तरह के समोच्च के निर्देशांक कैसे प्राप्त करूं?

उत्तर

23

contours वास्तव में के रूप में

vector<vector<Point> > contours; 

परिभाषित किया गया है और अब मुझे लगता है कि यह कैसे अपने अंक तक पहुँचने के लिए स्पष्ट है।

समोच्च क्षेत्र एक समारोह अच्छी तरह से contourArea() बुलाया करके की जाती है:

for (unsigned int i = 0; i < contours.size(); i++) 
{ 
    std::cout << "# of contour points: " << contours[i].size() << std::endl; 

    for (unsigned int j=0; j<contours[i].size(); j++) 
    { 
     std::cout << "Point(x,y)=" << contours[i][j] << std::endl; 
    } 

    std::cout << " Area: " << contourArea(contours[i]) << std::endl; 
} 
+1

धन्यवाद एक बहुत! यह समझने में थोड़ी देर लग गई कि आप क्या कर रहे थे, लेकिन जहां तक ​​मैं अब से कह सकता हूं यह काम करता है :) इस समस्या पर बैठे दिनों के लिए कोई समाधान नहीं देख रहा है ... – Temer

+0

पढ़ना दस्तावेज़ आपको बहुत से बचाएगा पहर :) । ओपनसीवी के साथ आता नमूना कोड कोड भी बहुत अच्छा है। – Sam

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