#include <opencv2/hdf.hpp>
using namespace std;
static void write_multiple_channels(cv::Mat data)
{
std::string filename = "data.h5";
std::string parent_name = "/data";
std::string dataset_name = parent_name + "/two_channels";
// prepare data
for (size_t i = 0; i < data.total()*data.channels(); i++)
((float*) data.data)[i] = (float)i;
cv::Ptr<cv::hdf::HDF5> h5io = cv::hdf::open(filename);
// first we need to create the parent group
if (!h5io->hlexists(parent_name)) h5io->grcreate(parent_name);
// create the dataset if it not exists
if (!h5io->hlexists(dataset_name)) h5io->dscreate(data.rows, data.cols, data.type(), dataset_name);
// the following is the same with the above function write_root_group_single_channel()
h5io->dswrite(data, dataset_name);
cv::Mat expected;
h5io->dsread(expected, dataset_name);
double diff = norm(data - expected);
CV_Assert(abs(diff) < 1e-10);
h5io->close();
}
===
import h5py
import numpy as np
h5data = h5py.File("data.h5",'r')
temp = h5data.get('/data/two_channels')
temp = np.array(temp)
import pdb; pdb.set_trace()
No comments:
Post a Comment