Python вызывает исключение «SystemExit: 1» в «sys.exit ( 1 )»

Я запускаю пример python simpleitk по этой ссылке https://simpleitk.readthedocs.io/en/master/Examples/ImageRegistrationMethod1/Documentation.html

в спайдер анаконда.

Я установил пакеты simpleitk,system,os через anaconda Prompt.

from __future__ import print_function

import SimpleITK as sitk
import sys
import os


def command_iteration(method) :
    print("{0:3} = {1:10.5f} : {2}".format(method.GetOptimizerIteration(),
                                   method.GetMetricValue(),
                                   method.GetOptimizerPosition()))

if len ( sys.argv ) < 4:
    print( "Usage: {0} <fixedImageFilter> <movingImageFile> <outputTransformFile>".format(sys.argv[0]))
cc


fixed = sitk.ReadImage(sys.argv[1], sitk.sitkFloat32)
print(sys.argv[1])
moving = sitk.ReadImage(sys.argv[2], sitk.sitkFloat32)

R = sitk.ImageRegistrationMethod()
R.SetMetricAsMeanSquares()
R.SetOptimizerAsRegularStepGradientDescent(4.0, .01, 200 )
R.SetInitialTransform(sitk.TranslationTransform(fixed.GetDimension()))
R.SetInterpolator(sitk.sitkLinear)

R.AddCommand( sitk.sitkIterationEvent, lambda: command_iteration(R) )

outTx = R.Execute(fixed, moving)

print("-------")
print(outTx)
print("Optimizer stop condition: {0}".format(R.GetOptimizerStopConditionDescription()))
print(" Iteration: {0}".format(R.GetOptimizerIteration()))
print(" Metric value: {0}".format(R.GetMetricValue()))

sitk.WriteTransform(outTx,  sys.argv[3])

if ( not "SITK_NOSHOW" in os.environ ):

    resampler = sitk.ResampleImageFilter()
    resampler.SetReferenceImage(fixed);
    resampler.SetInterpolator(sitk.sitkLinear)
    resampler.SetDefaultPixelValue(100)
    resampler.SetTransform(outTx)

    out = resampler.Execute(moving)
    simg1 = sitk.Cast(sitk.RescaleIntensity(fixed), sitk.sitkUInt8)
    simg2 = sitk.Cast(sitk.RescaleIntensity(out), sitk.sitkUInt8)
    cimg = sitk.Compose(simg1, simg2, simg1//2.+simg2//2.)
    sitk.Show( cimg, "ImageRegistration1 Composition" )

При запуске этого кода он дает мне ошибку, следующую за ошибкой Использование: E:/registration/simpleitk.py Произошло исключение, используйте %tb для просмотра полной трассировки.

SystemExit: 1

C:\Users\aBC\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\interactiveshell.py:3275: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
7 812
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Подозреваю, что скрипт не умеет загружать изображение при вызове sitk.ReadImage. Ожидается, что имя файла будет указано в переменной sys.argv[1]. Сценарий предназначен для запуска в командной строке с фиксированным именем файла изображения, именем файла движущегося изображения и именем выходного файла преобразования, указанными в качестве аргументов командной строки.

Если вы не можете предоставить аргумент командной строки в Spyder (я не знаю, я не знаком с ним), вы можете жестко закодировать имена файлов в скрипте.

Если у вас есть дополнительные вопросы о SimpleITK, я предлагаю проверить ITK Discourse, discourse.itk.org.

Я не знаком с аргументом командной строки в Spyder. Как я могу жестко закодировать имена изображений в скрипте ------fixed = sitk.ReadImage(sys.argv[1], sitk.sitkFloat32) moving = sitk. ReadImage(sys.argv[2], sitk.sitkFloat32)

user11297480 04.05.2019 11:11

Замените аргумент sys.argv[2] строкой, содержащей имя файла.

Dave Chen 06.05.2019 15:47

Я внес следующие изменения в код..... Я заменил это... fixed = sitk.ReadImage(sys.argv[1], sitk.sitkFloat32) ...на это... fixed = sitk.ReadImage( "Picture1.png", sitk.sitkFloat32)... Я заменил это ...moving = sitk.ReadImage(sys.argv[2], sitk.sitkFloat32)... на.... moving = sitk.ReadImage( "Picture2.png", sitk.sitkFloat32) и это... sitk.WriteTransform(outTx, sys.argv[3]) ...с этим sitk.WriteTransform(outTx, "output.png")..но это показать ошибку в этой строке ...sitk.WriteTransform(outTx, "output.png")..

user11297480 06.05.2019 16:10

Ошибка :sitk.WriteTransform(outTx, "output.png") Файл "C:\Users\a\AppData\Local\Continuum\anaconda3\lib\site-packa‌ges\SimpleITK\Simple‌​ITK.py", return _SimpleITK.WriteTransform(transform, filename) RuntimeError: Исключение в SimpleITK WriteTransform: itk::ERROR: Попытка создать одно из следующих: неподдерживаемый тип.

user11297480 06.05.2019 16:12

PNG не является форматом файла преобразования. Это для изображений. Для записи файла преобразования необходимо использовать суффикс одного из поддерживаемых форматов. Суффиксы включают «.txt», «.tfm», «.mat» и «.xfm».

Dave Chen 06.05.2019 16:41

Теперь сидя - sitk.WriteTransform(outTx, "output.txt") - показывает следующую ошибку. Файл "E:/registration/simpleitk.py", строка 58, в <module> sitk.Show(cimg, "ImageRegistration1 Composition") Файл "C:\Users\w\AppData\Local\Continuum\anaconda3\lib\site -packa‌​ges\SimpleITK\Simple‌​ITK.py", строка 7887, в Show return _SimpleITK.Show(*args, **kwargs) RuntimeError: Исключение в SimpleITK Show: C:\Users\dashboard\Miniconda3\conda- bld\simpleitk_1545325552‌​986\work\Code\IO\src‌​\sitkShow.cxx:495: sitk::ERROR: Подходящий исполняемый файл не найден.

user11297480 06.05.2019 17:11

Скрипт не создает новое изображение. Простая регистрация производит преобразование, которое переходит из пространства движущегося изображения в пространство фиксированного изображения. Затем вам нужно будет использовать преобразование для передискретизации движущегося изображения в пространство фиксированного изображения.

Dave Chen 06.05.2019 17:17

как избавиться от вышеуказанной ошибки в этой строке ...sitk.Show(cimg, "ImageRegistration1 Composition" )..

user11297480 06.05.2019 17:27

Вам нужно установить Фиджи. При вызове функции Show SimpleITK пытается отобразить изображение с помощью приложения Fiji. Вы можете скачать его с Fiji.sc.

Dave Chen 06.05.2019 18:14

я установил fiji в приглашении anaconda, используя эту команду .... conda install -c hanslovsky fiji ...... но эта строка .... sitk.Show ( cimg, "ImageRegistration1 Composition" ) ... все еще дает та же ошибка.....возврат _SimpleITK.Show(*args, **kwargs) RuntimeError: Исключение в SimpleITK Show: C:\Users\dashboard\Miniconda3\conda-bld\simpleitk_1545325552‌​986\work\Code\IO\ src‌​\sitkShow.cxx:495: sitk::ERROR: Подходящий исполняемый файл не найден.

user11297480 06.05.2019 20:32

SimpleITK ожидает, что Fiji будет найден в каталоге Program Files, вашем домашнем каталоге или на рабочем столе. Я думаю, что Anaconda устанавливает его где-то еще. Вероятно, вам будет проще закомментировать строку Show и просто записать изображение в виде файла. site.WriteImage(cimg, 'MyRegisteredImage.png'). Затем вы можете использовать любое приложение для просмотра изображений, которое вам нравится, чтобы открыть файл PNG.

Dave Chen 06.05.2019 21:50

После написания этой строки.... sitk.WriteImage(cimg, 'MyRegisteredImage.png').... в каталоге проекта не появилось изображение с именем MyRegisteredImage.png. Как получить зарегистрированное изображение?

user11297480 07.05.2019 15:28

Должно быть, это было написано где-то в другом месте. Если вы дадите ему полное имя пути, вы сможете точно сказать, в какой каталог записать образ.

Dave Chen 07.05.2019 15:39

Другие вопросы по теме