Привет, я пробовал много поиска в чтении 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
Одна из проблем заключается в том, что выше xml является сериализованным * IplImage *, а не cv :: Mat. это не только часть «opencv-image», ширина <-> cols, высота <-> строк и т. д., если это устаревшие данные, у вас не будет другого шанса, чем cvLoad (yukk). если вы на самом деле * пишете * это, вы должны изменить * эту * часть на 1-м месте. – berak
@berak Вы очень правы, и проблема в том, что я не пишу эти данные. Я просто использую этот набор данных для своей исследовательской работы, и я должен использовать это любой ценой. Я сделал все, но здесь я застрял, когда я использую cvLoad в цикле, чтобы получить файлы, прочитанные через IplImage * depth = (IplImage *) cvLoad (getPath (имя файла)); где getPath (filename) возвращает «data \\ depth \\ depthImg190.xml» , но cvLoad не читает файл должным образом, но когда я использую IplImage * depth = (IplImage *) cvLoad ("data \\ depth \\ depthImg190.xml "); он правильно читает. – Zainb
Что может мне помочь здесь, я не получаю, если он работает, когда я дал файл как жесткий символ кода, но не работал с переменной. – Zainb