Попытка преобразовать файлы изображений Dicom в png

Привет, у меня есть папка с файлами dcm, которые я хочу преобразовать в файлы png, чтобы поместить их в папку png. Вот код, который я сделал:

dcm_folder= '/Users/riaroque/Desktop/DCM Pneumonia cases'
PNG_folder= '/Users/riaroque/Desktop/PNG folder'

os.makedirs(PNG_folder, exist_ok=True)
for dcm_file in os.listdir(dcm_folder):
    dcm_file_path = os.path.join(dcm_folder, dcm_file)
    png_file_path = os.path.join(PNG_folder, '%s.png' % dcm_file)
    try:
        convert_file(dcm_file_path, png_file_path)
        print (dcm_file_path, '-->', png_file_path)
    except:
        print ('FAIL>', dcm_file_path, '-->', png_file_path)

Это дает мне список этой ошибки

FAIL> /Users/riaroque/Desktop/DCM Pneumonia cases/UP0084.dcm --> /Users/riaroque/Desktop/PNG folder/UP0084.dcm.png

Я вижу, что из-за ошибки он неправильно преобразован с .dcm.png в конце. Как мне удалить .dcm и просто заменить его на .png?


person Ria Roque    schedule 28.07.2020    source источник


Ответы (1)


Замените следующую строку:

png_file_path = os.path.join(PNG_folder, '%s.png' % dcm_file)

с

png_file_path = os.path.join(PNG_folder, dcm_file.replace('.dcm', '.png')

При этом используется метод замены строки для изменения «.dcm» на «.png».

Предполагается, что «.dcm» появляется только как суффикс в конце имени файла. Если в строке есть более раннее вхождение «.dcm», вам придется сделать что-то более сложное.

person Dave Chen    schedule 29.07.2020
comment
Спасибо! Я попытался вставить его с вашим кодом (с дополнительной скобкой в ​​​​конце), но все равно получаю эту ошибку: FAIL> /Users/riaroque/Desktop/DCM Pneumonia cases/UP0084.dcm --> /Users/riaroque/Desktop/PNG folder/UP0084.png FAIL> /Users/riaroque/Desktop/DCM Pneumonia cases/UP0090.dcm --> /Users/riaroque/Desktop/PNG folder/UP0090.png - person Ria Roque; 29.07.2020
comment
Я просто хочу спросить, в одной из ошибок есть и это: FAIL> /Users/riaroque/Desktop/DCM Pneumonia cases/.DS_Store --> /Users/riaroque/Desktop/PNG folder/.DS_Store Как вы думаете, из-за нее все выходит из строя? - person Ria Roque; 29.07.2020
comment
.DS_Store явно не образ Dicom. Это файл атрибутов, добавленный Mac OS. Очевидно, вы должны игнорировать этот файл. - person Dave Chen; 29.07.2020
comment
Что касается первого FAIL, если бы мне пришлось угадывать, возможно, функция convert_file не любит имена путей с пробелами в них. Часто ОС не обрабатывает их правильно. - person Dave Chen; 29.07.2020