Если вы знаете, что изображения не сжаты, то вы можете получить доступ к необработанным данным первого кадра следующим образом: Imebra :
imebra::DataSet loadedDataSet = imebra::CodecFactory::Load("pathToFileName);
size_t imageWidth = loadedDataSet.getUint32(imebra::TagId(imebra::tagId_t::Columns_0028_0011), 0);
size_t imageHeight = loadedDataSet.getUint32(imebra::TagId(imebra::tagId_t::Rows_0028_0010), 0);
size_t channels = loadedDataSet.getUint32(imebra::TagId(imebra::tagId_t::SamplesPerPixel_0028_0002), 0);
size_t allocatedBits = loadedDataSet.getUint32(imebra::TagId(imebra::tagId_t::BitsAllocated_0028_0100), 0);
size_t totalSizeBytes = (imageWidth * imageHeight * allocatedBits * channels + 7) / 8;
ReadingDataHandlerNumeric rawData = loadedDataSet.getReadingDataHandlerNumeric(TagId(PixelData_7FE0_0010), 0);
size_t dataSize(0);
const char* pMemory = rawData.data(&dataSize);
// Now pMemory points to the raw data, dataSize holds the memory size
Если вам нужен второй кадр или изображения сжимаются, тогда вы должны использовать imebra :: DataSet :: getImage () и позволить imebra найти нужную область памяти и распаковать изображение для вас.
Обратите внимание, что последовательные несжатые изображения не выровнены по границе байта но первый бит второго кадра может быть в том же байте, который содержит последний бит первого кадра. Для сжатых изображений вам, возможно, придется иметь дело с таблицей смещений, указывающей на буферы, содержащие изображения.
Отказ от ответственности: я являюсь автором Imebra.