我正在尝试将程序 Slicer 中定义的基准节点的 R,A,S (x,y,z) 坐标导入 Python 代码。
使用 3D Slicer 4.4.0,我通过视觉放置点在由 R、A、S 坐标(x、y、z 坐标)定义的空间中创建了许多基准节点。我没有输入坐标,我只是指向并单击我想要放置它们的位置。然后我保存了节点放置数据,Slicer 将该数据保存在 FCSV 文件中。我可以再次在 Slicer 中加载该数据,并且还可以通过使用文本编辑器打开 FCSV 文件来读取数据。在文本编辑器中,节点数据以这种格式列出(其中每行节点数据中的第 2、第 3 和第 4 个条目是 x、y、z 坐标):
# Markups fiducial file version = 4.4
# CoordinateSystem = 0
# columns =
id,x,y,z,ow,ox,oy,oz,vis,sel,lock,label,desc,associatedNodeID
vtkMRMLMarkupsFiducialNode_1,-48.0839,17.9915,59.9101,0,0,0,1,1,1,0,F-2,,vtkMRMLScalarVolumeNode2
vtkMRMLMarkupsFiducialNode_2,-46.5946,-4.34737,59.9101,0,0,0,1,1,1,0,F-3,,vtkMRMLScalarVolumeNode2
vtkMRMLMarkupsFiducialNode_3,-48.5803,-24.2042,59.9101,0,0,0,1,1,1,0,F-4,,vtkMRMLScalarVolumeNode2
vtkMRMLMarkupsFiducialNode_4,-47.0911,-44.061,59.9101,0,0,0,1,1,1,0,F-5,,vtkMRMLScalarVolumeNode2
......它继续获得更多积分。
我想有一种方法将数据的坐标导入 python(从 python 脚本),最好导入 3 个单独的数组,每个数组包含 x、y 或 z 坐标,或者导入一个 3xN 或 Nx3 数组,其中包含每个点的 x、y、z 数据。我不在乎分数的顺序。
我尝试使用以下代码检索 FCSV 文件:
os.chdir('C:\Users\Me\Desktop\Code_folder')
InputFile = open('C:\Users\Me\Desktop\Code_folder\f.fcsv','r')
lines = InputFile.readlines()
InputFile.close()
...但它返回了一个错误,指出:
runfile('C:/Users/Me/Documents/Python Scripts/load_fiducials_test.py', wdir='C:/Users/Me/Documents/Python Scripts')
File "C:/Users/Me/Documents/Python Scripts/load_fiducials_test.py", line 126
InputFile = open('C:\Users\Me\Desktop\Code_folder\f.fcsv','r')
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
我如何通过修改我之前的尝试或尝试其他方式来检索这些数据点,以便在 Python 中用作数组?