width = ndimage.measurements.maximum_width(stack, axis=0)中的ndimage.measurements.maximum_width属性已经被弃用,如何解决
时间: 2024-02-27 21:57:43 浏览: 17
可以使用scipy.ndimage.find_objects函数来代替ndimage.measurements.maximum_width。这个函数返回一个由切片对象组成的列表,每个切片对象表示找到的对象的边界框。可以将这些切片对象传递给numpy的slice函数,以提取对应的子数组。下面是一个示例代码:
```
import numpy as np
import scipy.ndimage as ndimage
# 生成随机的三维数组
stack = np.random.rand(10, 20, 30)
# 使用scipy.ndimage.find_objects函数查找对象的边界框
bbox = ndimage.find_objects(stack > 0.5)
# 使用切片对象提取对应的子数组
subarrays = [stack[obj] for obj in bbox]
# 计算子数组的最大宽度
widths = [subarray.shape[0] for subarray in subarrays]
max_width = max(widths)
print("最大宽度为:", max_width)
```
这个代码生成一个随机的三维数组,然后使用scipy.ndimage.find_objects函数查找数组中值大于0.5的对象的边界框,将对应的子数组存储在subarrays列表中,然后计算子数组的最大宽度。
相关问题
width = ndimage.measurements.maximum_width(stack, axis=0)中的ndimage.measurements.maximum_width属性已经被弃用,如何修改
可以使用scipy.ndimage.find_objects函数来代替ndimage.measurements.maximum_width。这个函数返回一个由切片对象组成的列表,每个切片对象表示找到的对象的边界框。可以将这些切片对象传递给numpy的slice函数,以提取对应的子数组。下面是一个示例代码:
```
import numpy as np
import scipy.ndimage as ndimage
# 生成随机的三维数组
stack = np.random.rand(10, 20, 30)
# 使用scipy.ndimage.find_objects函数查找对象的边界框
bbox = ndimage.find_objects(stack > 0.5)
# 计算每个对象的最大宽度
widths = []
for obj in bbox:
# 使用numpy的slice函数提取对应的子数组
subarray = stack[obj]
# 计算子数组在指定轴上的最大宽度
width = subarray.shape[0]
for axis in range(1, subarray.ndim):
proj = np.max(subarray, axis=axis)
proj_bbox = ndimage.find_objects(proj > 0.5)
if len(proj_bbox) > 0:
proj_width = proj_bbox[0][0].stop - proj_bbox[0][0].start
if proj_width > width:
width = proj_width
widths.append(width)
# 计算所有对象的最大宽度
max_width = max(widths)
print("最大宽度为:", max_width)
```
这个代码生成一个随机的三维数组,然后使用scipy.ndimage.find_objects函数查找数组中值大于0.5的对象的边界框,然后计算每个对象在每个轴上的最大宽度,最后计算所有对象的最大宽度。
center_y, center_x = ndimage.measurements.center_of_mass(cur_mask) vis_pos = (max(int(center_x) - 10, 0), int(center_y))代码含义
这段代码使用了SciPy库中的ndimage模块,其中measurements子模块的center_of_mass()函数可以计算出一个二维数组(即cur_mask)中非零元素的重心坐标。
具体来说,center_of_mass()函数的返回值是一个长度为2的元组,表示非零元素在第0轴和第1轴上的重心坐标。因此,代码中的center_y和center_x分别表示cur_mask中非零元素在第0轴和第1轴上的重心坐标。
接下来,代码中的vis_pos变量是一个元组,表示可视化位置,其值为(center_x-10, center_y),即将重心坐标的第1轴减去10作为可视化位置的横坐标,将重心坐标的第0轴作为可视化位置的纵坐标。需要注意的是,这里的横纵坐标与center_of_mass()函数的返回值中的顺序相反,即先是横坐标后是纵坐标。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)