Je développe un rapide DICOM viewer
en utilisant DCMTK library
et je suis l'exemple fourni en this link.findAndGetString() dans DCMTK renvoie null pour l'étiquette
Le tampon du API
renvoie toujours la valeur null pour n'importe quel ID de tag, par exemple: DCM_PatientName
. Mais le findAndGetOFString() API
fonctionne bien mais renvoie uniquement le premier caractère de la balise dans ASCII
, est-ce que cette API devrait fonctionner? Est-ce que quelqu'un peut me faire savoir pourquoi le tampon est vide l'ancienne API?
Également le DicomImage API
également le même problème.
Snippet 1:
DcmFileFormat fileformat;
OFCondition status = fileformat.loadFile(test_data_file_path.toStdString().c_str());
if (status.good())
{
OFString patientName;
char* name;
if (fileformat.getDataset()->findAndGetOFString(DCM_PatientName, patientName).good())
{
name = new char[patientName.length()];
strcpy(name, patientName.c_str());
}
else
{
qDebug() << "Error: cannot access Patient's Name!";
}
}
else
{
qDebug() << "Error: cannot read DICOM file (" << status.text() << ")";
}
Dans l'extrait ci-dessus name
a la valeur ASCII "50" et le nom réel est "patient".
Snippet 2:
DcmFileFormat file_format;
OFCondition status = file_format.loadFile(test_data_file_path.toStdString().c_str());
std::shared_ptr<DcmDataset> dataset(file_format.getDataset());
qDebug() << "\nInformation extracted from DICOM file: \n";
const char* buffer = nullptr;
DcmTagKey key = DCM_PatientName;
dataset->findAndGetString(key,buffer);
std::string tag_value = buffer;
qDebug() << "Patient name: " << tag_value.c_str();
Dans l'extrait ci-dessus, le tampon est nulle. Il ne lit pas le nom.
REMARQUE:
Ceci est seulement un échantillon. Je suis juste en train de jouer autour des API pour apprendre le but .
nom = nouveau caractère [nomPoste.longueur()]; devrait être name = new char [patientName.length() + 1]; pour inclure le terminateur null. Les chances sont que le débogueur montre juste le premier caractère de la chaîne. Essayez qDebug() << nom –
Pas de chance. Impressions 50.J'ai également reçu cet avertissement "W: DcmMetaInfo: longueur de groupe d'en-tête d'informations méta a une valeur incorrecte" mais le fichier .dcm s'ouvre correctement dans un outil existant. –
@kaviergeoffrey si le fichier est anonymisé pouvez-vous le partager? –