Вы используете довольно старую версию Imebra.
С Imebra 4 и 5 вы можете:
- создать объект изображения
- заполнить объект изображения с необработанными данными
- создать набор данных DICOM
- добавить изображение в набор данных DICOM
- заполнить все необходимые теги DICOM (например, класс sop, экземпляр, имя пациента и т. д. *) 1025 *)
- сохранить набор данных DICOM
В коде с Imebra5:
include <imebra/imebra.h>
// Create an image 500 pixels wide, 400 pixels height,
// each sample is a 16 bit unsigned value, the colorspace
// is monochrome_2, the higher bit used is 15
imebra::MutableImage image(500, 400, imebra::bitDepth_t::depthU16, "MONOCHROME2", 15);
// We fill the image with data
{
// We use a writing data handler to write into the image.
// The data is committed into the image only when the writing
// data handler goes out of scope.
imebra::WritingDataHandlerNumeric writeIntoImage(image.getWritingDataHandler());
for(size_t y(0); y != 400; ++y)
{
for(size_t x(0); x != 500; ++x)
{
// This method is slow, you can access directly the memory
// with writeIntoImage.assign() or getMemory()
writeIntoImage.setUnsignedLong(y * 500 + x, pixelValue);
}
}
}
// We specify the transfer syntax and the charset
imebra::charsetsList_t charsets;
charsets.push_back("ISO 2022 IR 6");
imebra::MutableDataSet dataSet("1.2.840.10008.1.2.1", charsets);
// Add the image to the dataset
dataSet.setImage(0, image, imebra::imageQuality_t::veryHigh);
// Set the patient name
dataSet.setUnicodePatientName(imebra::TagId(imebra::tagId_t::PatientName_0010_0010), imebra::UnicodePatientName(L"Patient^Name", "", ""));
// Save to a file
imebra::CodecFactory::save(dataSet, "dicomFile.dcm", imebra::codecType_t::dicom);
Код Imebra 4 аналогичен, но функции возвращают указатели вместо объектов .
Отказ от ответственности: я автор Imebra