MATLAB通过pyrunfile运行含itk-elastix的Python代码时进程意外终止的问题求助
MATLAB通过pyrunfile运行含itk-elastix的Python代码时进程意外终止的问题求助
大家好,我最近碰到了一个头疼的问题:我有一段依赖itk-elastix库的Python代码,在VSCode里运行完全正常,但用MATLAB的pyrunfile调用时,进程会意外终止,而且每次出错后都必须重启MATLAB才能再次尝试。
环境信息
- Python版本:3.11.9
- MATLAB版本:2023b
- itk-elastix版本:0.21.0
Python代码(能正常执行的部分)
import itk import numpy as np import matplotlib.pyplot as plt import os from scipy.ndimage import rotate import scipy.ndimage as ndi import ipywidgets as widgets from ipywidgets import interact, IntSlider import time ## Merge CT from patient XXXX and targets from YYYY os.chdir('C:/Users/Admin/...') print("Test0") nr = '0000' MRh = itk.imread("NIIFT/MRI_"+nr+".nii", itk.F) CTh = itk.imread("NIIFT/CT_"+nr+".nii", itk.F) print("Test1") fixed_image = CTh resize_factor = 1 moving_image = MRh print("Test2") parameter_object = itk.ParameterObject.New() parameter_object.ReadParameterFile("ParametersRigid.txt") print("Test3")
出现问题的代码段
就是这段调用elastix注册方法的代码,执行到这里就会触发进程终止:
result_image, rigid_parameters = itk.elastix_registration_method( fixed_image, moving_image, parameter_object=parameter_object, log_to_console=False) print(parameter_object) print("Test4") itk.imwrite(result_image, "NIIFT/MRI_Corr_"+nr+".nii") print("Test5")
MATLAB调用代码
我在MATLAB里是这样调用Python脚本的:
pyrunfile("Merger_CT_X_TARGET_Y.py");
错误输出
执行后MATLAB给出的错误信息如下:
>> MergeFromMatlab Test0 Test1 Test2 Test3 (...some prints here) Error using py.exec Python process terminated unexpectedly. To restart the Python interpreter, first call "terminate(pyenv)" and then call a Python function. Error in MergeFromMatlab (line 3) pyrunfile("Merger_CT_X_TARGET_Y.py");
目前我观察到,代码在Test3之前的部分都能正常执行,打印出对应的日志,但一旦进入itk.elastix_registration_method就会崩溃。有没有朋友遇到过类似的情况,或者能给我一些排查方向?非常感谢!
备注:内容来源于stack exchange,提问作者Vanhanen_
相关产品推荐
相关产品推荐

