遍历文件夹中所有nii格式文件,针对每个文件,遍历所有图层,找到最大面积图层,打印该图层在第几层,然后,获取该图层中外接正方形的四个顶点坐标,并打印这些坐标,需要代码
时间: 2024-05-01 11:18:49 浏览: 120
好的,以下是代码示例:
``` python
import os
import nibabel as nib
import numpy as np
# 遍历文件夹中所有nii格式文件
def get_nii_files(root_path):
nii_list = []
for root, dirs, files in os.walk(root_path):
for file in files:
if file.endswith('.nii'):
nii_list.append(os.path.join(root, file))
return nii_list
# 获取nii文件中最大面积图层及其顶点坐标
def get_max_area_layer(nii_path):
nii_img = nib.load(nii_path)
nii_data = nii_img.get_data()
max_area = 0
max_layer = 0
max_extrema = None
for i in range(nii_data.shape[2]): # 遍历所有图层
layer = nii_data[:,:,i]
layer_contours = cv2.findContours(layer.astype(np.uint8), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if len(layer_contours)>0:
contour_area = cv2.contourArea(layer_contours[0][0])
if contour_area > max_area: # 找到最大面积图层
max_area = contour_area
max_layer = i
rect = cv2.minAreaRect(layer_contours[0][0])
box = cv2.boxPoints(rect)
box = np.int0(box)
max_extrema = box.tolist() # 获取外接正方形的四个顶点坐标
return max_layer, max_extrema
if __name__ == '__main__':
root_path = '/path/to/root/folder'
nii_files = get_nii_files(root_path)
for nii_file in nii_files:
max_layer, max_extrema = get_max_area_layer(nii_file)
print(nii_file, max_layer, max_extrema)
```
这段代码可以遍历指定根目录下所有的nii格式文件,对于每个文件,找到最大面积图层并打印该图层在第几层,然后获取该图层中外接正方形的四个顶点坐标并打印出来。
阅读全文