2012-10-04 46 views
10

Tôi biết cách tải/lưu một cá thể cv::Mat vào một tệp XML (Xem this question).Làm cách nào để đọc từ chuỗi XML trong OpenCV?

Nhưng những gì tôi thực sự cần, là phân tích cú pháp std::string (hoặc char *) có chứa XML và nhận được cv::Mat. Giả sử tôi lấy XML ra khỏi cơ sở dữ liệu chứ không phải từ một tệp.

Điều đó có khả thi không?

Trả lời

16

Bạn có thể làm điều đó từ OpenCV 2.4.1.

Đây là một mẫu mã từ release notes:

//==== 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

tuyệt vời. Bất cứ ai gặp các vấn đề tương tự, Bạn không nên viết những thứ như FileStorage :: READ || FileStorage :: MEMORY giống như các libs khác - bạn nên sử dụng + thay vào đó. – xxbidiao

+0

Khi đọc lại, bạn định rõ định dạng (YAML/XML) như thế nào? Tôi hỏi vì tôi viết nó dưới dạng .xml. – rdasxy

+0

@rdasxy, định dạng được phát hiện tự động. Tôi không biết chắc chắn nhưng rất có thể nó quyết định dựa trên thẻ khai báo XML/YML –

Các vấn đề liên quan