Хорошо, использование save_as
должно сработать, если вы используете его, как в первой попытке Вот код, который должен работать:
import pydicom
from pydicom.misc import is_dicom
dico = pydicom.filereader.dcmread('1.dcm')
dico.PatientID = 'None'
dico.PatientBirthDate = None
path = '/dataset'
dico.save_as(os.path.join(path,'Anonymous.dcm'))
# alternatively:
# dcmwrite(os.path.join(path,'Anonymous.dcm', dico)
Обратите внимание, что я изменил dico['PatientID']
на dico.PatientID
. Это не только удобный ярлык, но также меняет семантику: если вы присваиваете dico['PatientID']
, вы должны назначить DataElement
:
dico['PatientID'] = DataElement(0x00100020, 'PN', b'None')
, тогда как если вы используете ключевое слово, вы можете напрямую присвойте значение (которое преобразуется в DataElement
внутри).
Я согласен, что в этом аспекте документации немного не хватает - я думаю, что было бы целесообразно добавить простой пример для чтения файла DICOM, его изменения и записи обратно. Но если вы проверите базовую c документацию по набору данных , вы должны найти большую часть необходимой информации.
Примечание относительно упомянутых свойств is_little_endian
и is_implicit_VR
: они необходимы только в том случае, если вы пишете новый набор данных, для которого не установлен синтаксис передачи. Здесь является примером для этого случая. Если набор данных читается из действительного файла DICOM, у него уже установлены эти свойства.