我当时使用itk
加载3d体积的文件并收到一个奇怪的错误,但是只有当我使用PyCharm的“运行配置”中的使用Python控制台运行来运行代码时,才出现此错误。 (这将在python控制台中运行该程序,如果在程序运行后访问变量,这将非常方便。)
import itk
def read_the_image(file_path):
global image
itk_image = itk.imread(file_path)
image = itk.GetArrayViewFromImage(itk_image)
return image
if __name__ == '__main__':
read_the_image("./t0.mha")
我还注意到global
语句正在起作用(如果没有,它也可以正常工作)。它也仅在某些图像类型上发生:虽然在.png
s中没有发生,但在.mha
s中发生。您可以在this tutorial archive(sourceforge上的一个项目)中找到此类文件的示例。
所以我想了解为什么在交互式python控制台中会发生这种情况,以及如何避免这种情况。
答案 0 :(得分:0)
我找到了一个避免此错误的解决方案,但我仍然不明白为什么它会首先出现。关键是将数据复制到新图像中:
import itk
import numpy as np
def read_the_image(file_path):
global image
itk_image = itk.imread(file_path)
image = np.copy(itk.GetArrayViewFromImage(itk_image))
return image
if __name__ == '__main__':
image = 3
read_the_image("./t0.mha")
我猜我们从itk.GetArrayViewFromImage
获得的数组访问某种资源,该资源必须在程序结束之前正确关闭,而在交互式python控制台中运行该资源可能不会发生。(?)但我仍然有不知道为什么这种特殊格式会发生这种情况。