2012-10-04 19 views
10

मुझे पता है कि cv::Mat उदाहरण को XML- फ़ाइल में कैसे लोड/सहेजना है (this question देखें)।ओपनसीवी में एक्सएमएल-स्ट्रिंग से मैं कैसे पढ़ सकता हूं?

लेकिन मुझे वास्तव में क्या चाहिए, std::string (या char *) को पार्स करना है जिसमें XML है, और cv::Mat प्राप्त करें। मान लें कि मुझे एक्सएमएल डेटाबेस से बाहर है, न कि फाइल से।

क्या यह संभव है?

उत्तर

16

ओपनसीवी 2.4.1 के बाद से आप इसे कर सकते हैं।

//==== storing data ==== 
FileStorage fs(".xml", FileStorage::WRITE + FileStorage::MEMORY); 
fs << "date" << date_string << "mymatrix" << mymatrix; 
string buf = fs.releaseAndGetString(); 

//==== reading it back ==== 
FileStorage fs(buf, FileStorage::READ + FileStorage::MEMORY); 
fs["date"] >> date_string; 
fs["mymatrix"] >> mymatrix; 
+0

कमाल:

यहाँ release notes से एक कोड नमूना है। कोई भी जो एक ही समस्या से मुलाकात करता है, आपको फाइलस्टॉरेज :: रीड || फाइलस्टोरेज :: अन्य libs की तरह स्मृति लिखना नहीं चाहिए - आपको इसके बजाय + का उपयोग करना चाहिए। – xxbidiao

+0

इसे वापस पढ़ने के दौरान, आप प्रारूप (वाईएएमएल/एक्सएमएल) कैसे निर्दिष्ट करते हैं? मैं पूछता हूं क्योंकि मैं इसे .xml के रूप में लिख रहा हूं। – rdasxy

+0

@rdasxy, प्रारूप स्वचालित रूप से पता चला है। मुझे निश्चित रूप से पता नहीं है लेकिन संभवतः यह एक्सएमएल/वाईएमएल घोषणा टैग –

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