我正在尝试从HDF5数据集文件中读取。该文件是用python创建的 .h5 数据集(可能是h5py),并包含2个属性。第一个属性是深度图像-“ / depth ”(单通道,32位浮点矩阵),尺寸为 376 x 1241 。第二个属性是RGB图像-“ / rgb ”(8位无符号字符),使用“ hdfview”查看时尺寸为 3 x 376 x 1241 。
我能够成功读取深度图像
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 x 376] ,而不是 [3 x 376 x 1241]
我尝试使用dsgetsize
方法,似乎返回了正确的尺寸。
std::vector<int> size_rgb = h5io->dsgetsize("/rgb",cv::hdf::HDF5::H5_GETDIMS);
这将返回整数向量 [3,376,1241]
任何帮助将不胜感激。我也愿意使用其他HDF5库来读取数据,而不是使用OpenCV 3.3.1的内置hdf库。
预先感谢您, S