Мне предоставлен файл .mat
(три измерения, одинарная точность с плавающей запятой), который я бы хотел прочитать, используя VXL
. VNL
имеет несколько классов/функций для этого, но я не нашел примеров, демонстрирующих их использование. Я собрал следующее вместе с the header file, но никаких данных не читают, и когда я запрашиваю размеры, я получаю то, что кажется неинициализированным барахлом (хотя некоторые данные из заголовка читаются).Чтение файла MatLab (mat) с помощью VNL
#include <vcl_cstdlib.h>
#include <vcl_iostream.h>
#include <vcl_fstream.h>
#include <vnl/vnl_matlab_read.h>
#include <vnl/vnl_vector.h>
int main(int argc, char ** argv)
{
if (2 != argc)
{
std::cerr << "Provide a file." << std::endl;
return EXIT_FAILURE;
}
const char * fileName = argv[1];
vcl_filebuf fileBuffer;
if (!fileBuffer.open(fileName,vcl_ios::in))
{
std::cerr << "There was a problem opening the file." << std::endl;
return EXIT_FAILURE;
}
vcl_istream stream(&fileBuffer);
vnl_matlab_readhdr read(stream);
vcl_cout << read.name() << vcl_endl; // Platform: PCWIN64, Created on: (date and time)
vcl_cout << read.rows() << vcl_endl; // 1094852661
vcl_cout << read.cols() << vcl_endl; // 774905933
vnl_vector<float> data;
vnl_matlab_read_or_die(stream, data, fileName);
std::cout << data.size() << std::endl; // 0
return EXIT_SUCCESS;
}
Я не могу сказать, если я использую класс неправильно, или если возможно VNL
не может иметь дело с многомерными массивами?
И только записку, [VXL] вероятно, был бы хороший тег на этот вопрос, но я не хватает репутации, чтобы предложить его. Быстрый поиск показывает множество других вопросов о 'vxl', но я не знаю, насколько популярна тема для обоснования тега. Просто мысль. –