2014-10-17 9 views
-3

Привет, я пробовал много поиска в чтении xml-файла с помощью type_id «opencv-image», все, что я смотрю здесь, это «opencv-matrix», и вся доступная помощь бесполезна для меня. Пожалуйста, помогите мне в чтении матрицы изображений из xml-файла.Прочтите xml-файл с помощью type_id opencv-image с помощью opencv

Я вставляю здесь верхнюю часть моего XML-файла для некоторой идеи.

<?xml version="1.0"?> 
<opencv_storage> 
<depthImg190 type_id="opencv-image"> 
<width>320</width> 
<height>240</height> 
<origin>top-left</origin> 
<layout>interleaved</layout> 
<dt>w</dt> 
<data> 
0 0 0 0 27120 27384 27120 27120 27384 27120 27120 27120 27120 27384 
27384 27664 27664 27944 27944 27664 27664 27944 27944 27944 28224 
27944 27944 28224 28224 28224 28224 28520 28816 29120 29120 29120 
29120 29120 29120 29120 29432 29744 30072 30072 29744 29744 30072 
30072 30072 30400 30400 30736 30736 31080 31080 31080 31440 31440 
31440 31440 31800 31800 31800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 27120 27120 27120 27120 27384 27384 27384 27384 27384 27384 
</depthImg190> 
</opencv_storage> 

Я использовал код

FileStorage f; 
Mat m; 
f.open("temp.xml", FileStorage::READ); 
f["depthImg190"] >> m; 
f.release(); 

, но я столкнулся исключение «OpenCV Errorr: Плохой аргумент < Неизвестный тип массива> в резюме :: читать файл ....... . \ opencv \ modules \ core \ persistence.cpp, строка 5535 ".

Любая помощь будет appriciated

+0

Одна из проблем заключается в том, что выше xml является сериализованным * IplImage *, а не cv :: Mat. это не только часть «opencv-image», ширина <-> cols, высота <-> строк и т. д., если это устаревшие данные, у вас не будет другого шанса, чем cvLoad (yukk). если вы на самом деле * пишете * это, вы должны изменить * эту * часть на 1-м месте. – berak

+0

@berak Вы очень правы, и проблема в том, что я не пишу эти данные. Я просто использую этот набор данных для своей исследовательской работы, и я должен использовать это любой ценой. Я сделал все, но здесь я застрял, когда я использую cvLoad в цикле, чтобы получить файлы, прочитанные через IplImage * depth = (IplImage *) cvLoad (getPath (имя файла)); где getPath (filename) возвращает «data \\ depth \\ depthImg190.xml» , но cvLoad не читает файл должным образом, но когда я использую IplImage * depth = (IplImage *) cvLoad ("data \\ depth \\ depthImg190.xml "); он правильно читает. – Zainb

+0

Что может мне помочь здесь, я не получаю, если он работает, когда я дал файл как жесткий символ кода, но не работал с переменной. – Zainb

ответ

2

На самом деле есть некоторые документы, которые можно использовать как: http://docs.opencv.org/modules/core/doc/xml_yaml_persistence.html

В любом случае, ответ на вашу проблему легко:

FileStorage fs("file.xml", FileStorage::READ); 
Mat image; 

fs["depthImg190"] >> image; 

(...) 

fs.release(); 

Он должен работать !

+0

Эй! I'v попробовал это, но я столкнулся с ошибкой «Opencv Errorr: Плохой аргумент <Неизвестный тип массива> в cv :: read, file .. \ .. \ .. \ .. \ opencv \ modules \ core \ persistence .cpp, строка 5535 « Я очень новичок в opencv, не могли бы вы помочь мне выбраться из этого? Я должен прочитать этот xml ASAP для своих исследований. спасибо – Zainb

+0

Мне нужно прочитать этот xml как можно скорее, так как я новичок в opencv, пожалуйста, назовите меня очень простым учеником для opencv. спасибо – Zainb

+0

Если это не удалось, попрошу вас поместить дополнительную информацию о своей проблеме, чтобы мы могли вам помочь: код, который вы используете, и структуру вашего XML-документа. – zedv