OpenCV 3.3.1和HDF5映像读取

时间:2018-08-21 13:16:58

标签: c++ opencv c++11 hdf5 hdf

我正在尝试从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

0 个答案:

没有答案