пидиком не определен

Я пытаюсь научиться использовать pydicom для чтения и обработки dicom изображений. Я использую Python 3.

import dicom 
import numpy
ds = pydicom.read_file(lstFilesDCM[0])
print(ds.pixel_array)`

Я получаю сообщение об ошибке NameError: name 'pydicom' is not defined. Если я изменюсь

   ds = pydicom.read_file(lstFilesDCM[0])

to

   ds = dicom.read_file(lstFilesDCM[0])

(используя вместо этого dicom.read_file), я получаю следующую ошибку:

NotImplementedError: Pixel Data is compressed in a format 
pydicom does not yet handle. Cannot return array

Я также убедился, что pydicom правильно установлен и обновлен.

Как я могу это исправить?


person Kuni    schedule 27.11.2017    source источник
comment
Вы говорите import dicom, а затем пытаетесь использовать pydicom. Что правильно?   -  person Peter Wood    schedule 28.11.2017
comment
Я делал это на основе документации из pydicom pydicom.readthedocs.io/en/latest/ working_with_pixel_data.html Но в любом случае pydicom, похоже, не работает. Как указал @serafeim, это может быть из-за несовместимых данных. Я думал, что данные в стандартном формате. Не думал, что это несовместимо. Я проверю и отпишусь, что узнаю.   -  person Kuni    schedule 28.11.2017
comment
ошибка: данные пикселей сжаты в формате, который pydicom еще не поддерживает, предполагает, что данные несовместимы с библиотекой. если возможно, добавьте некоторые данные, чтобы попытаться найти решение   -  person seralouk    schedule 28.11.2017
comment
Есть ли какая-либо документация, в которой описывается, какие пиксельные данные совместимы? Эти данные поступают непосредственно с аппарата эхокардиографии. Это данные УЗИ. Я пытаюсь выяснить, как проверить его совместимость.   -  person Kuni    schedule 28.11.2017
comment
В рабочий код в репозитории было добавлено много обработчиков сжатых данных, но их пока нет в официальном релизе. Чтобы использовать код репозитория (достаточно стабильный), установите с pip install git+https://github.com/pydicom/pydicom.git и используйте import pydicom.   -  person darcymason    schedule 28.11.2017


Ответы (2)


Вы пытаетесь вызвать класс, который вы не импортировали ранее:

Использовать:

import pydicom
import numpy


ds = pydicom.read_file(lstFilesDCM[0])
print(ds.pixel_array)

или

import dicom
ds = dicom.read_file("the_name_of_file.dcm")

Документация: http://pydicom.readthedocs.io/en/stable/pydicom_user_guide.html< /а>

person seralouk    schedule 27.11.2017
comment
Я тоже пробовал это, но когда я пытаюсь импортировать его, я получаю «Нет модуля с именем pydicom». Я использую блокнот Jupyter и даже пытался перезапустить ядро. - person Kuni; 28.11.2017
comment
@Вы установили dicom и pydicom ?? также см. мой измененный ответ - person seralouk; 28.11.2017
comment
и я учился на этом сайте: http://pydicom.readthedocs.io/en/latest/working_with_pixel_data.html и если вы заметили, они сделали именно то, что сделал я. И я также упомянул, что в вопросе я получаю NotImplementedError' when I used dicom.read_file` - person Kuni; 28.11.2017
comment
Я не могу получить доступ к этому веб-сайту. но можете ли вы попробовать вторую вещь, которую я предложил в своем ответе? также обязательно прочитайте и используйте официальную документацию. некоторые другие онлайн-уроки довольно часто содержат ошибки - person seralouk; 28.11.2017
comment
pydicom.readthedocs.io/en/latest/working_with_pixel_data.html Как я уже упоминал выше, я уже пробовал ваш второй метод и получил NotImplementedError. Я отредактировал свой вопрос, чтобы переформатировать его, чтобы он был более заметен. - person Kuni; 28.11.2017
comment
вторая ошибка говорит о том, что ваши данные несовместимы с реализованными методами библиотеки. можно добавить данные? например одно диком изображение? - person seralouk; 28.11.2017
comment
Я бы добавил изображение, но оно содержит информацию о пациенте. я недостаточно знаю DICOM, чтобы что-то там менять. Я посмотрю, смогу ли я это понять и опубликую здесь - person Kuni; 28.11.2017

Если вы хотите получить данные о пикселях, я предлагаю использовать программу convert из пакета ImageMagick. Вы можете либо вызвать эту программу из Python, используя модуль subprocess. (См. этот пример, где я конвертирую их в формат JPEG. ), или вы можете использовать одну из привязок Python.

Если вы хотите манипулировать изображениями, использование привязок может быть предпочтительнее. Но обратите внимание, что не все привязки были преобразованы в ImageMagick версии 7.

person Roland Smith    schedule 27.11.2017