我正在使用itk
加载一个3d卷文件,并且出现了一个奇怪的错误,但前提是我在PyCharm的Run Configurations中选中了Run with Python Console。 (这在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控制台中发生这种情况以及我可以做些什么来避免它。
我找到了一个避免这个错误的解决方案,但我仍然不明白为什么它首先发生。关键是将数据复制到新图像中:
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控制台中运行时发生。(?)但我仍然不知道为什么会发生这种情况这种特殊的格式。