Чтение изображений OpenCV 3.3.1 и HDF5

Я пытаюсь прочитать из файла набора данных 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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]