Я пытаюсь прочитать из файла набора данных HDF5. Файл является .h5 набор данных, созданный в python (возможно, h5py), содержит 2 атрибута. Первый атрибут — это изображение глубины —/ глубина«(одноканальный, 32-разрядная матрица с плавающей точкой) с размерами 376 х 1241. Второй атрибут — это изображение RGB —/ RGB«(8-битные символы без знака) с размерами 3 х 376 х 1241 при просмотре с использованием «hdfview».
Я могу успешно прочитать изображение глубины с
cv::Ptr<cv::hdf::HDF5> h5io = cv::hdf::open("filename.h5");
cv::Mat depth;
h5io->dsread(depth, "/depth");
Но когда я пытаюсь сделать то же самое с изображением RGB, кажется, что не все данные правильно загружены в cv::Mat
Переменная RGB.
cv::Mat rgb;
h5io->dsread(rgb, "/rgb");
std::cout << rgb.size() << std::endl;
Я получаю следующий вывод: [3 х 376] вместо [3 х 376 х 1241]
Я пытался использовать dsgetsize
метод, и это, кажется, возвращает правильные размеры.
std::vector<int> size_rgb = h5io->dsgetsize("/rgb",cv::hdf::HDF5::H5_GETDIMS);
Это возвращает вектор целых [3,376,1241]
Любая помощь с благодарностью. Я также открыт для использования других библиотек HDF5 для чтения данных вместо встроенной библиотеки hdf OpenCV 3.3.1.
Заранее спасибо,
S
Задача ещё не решена.
Других решений пока нет …