我正在尝试使用 python 并使用 scipy 进行一些非常简单的分割。我在这里尝试做的是标记和图像(一个numpy ndarray),然后计算一些补丁的大小,删除其中最大的,然后再次标记它。
但是最后一个ndimage.label( fin )
给了我一个错误
RunTimeError: data type not supported
知道什么可能导致错误吗?数组 a 和数组 fin 都是 int32 相同的数据类型。此外,标签函数应该默认结构元素和输出为未定义的相同类型。这真的让我很烦。
这是我正在运行的小测试代码:
import numpy as np
from scipy import ndimage
def main():
a = np.array([ [1, 1, 1, 0, 0, 0],
[1, 1, 1, 0, 0, 0],
[1, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 1, 0],
[0, 0, 0, 0, 1, 1],
[1, 0, 0, 0, 1, 0] ])
labeled_array, numpatches = ndimage.label(a)
sizes = ndimage.sum(a,labeled_array,range(1,numpatches+1))
mp = np.where(sizes == sizes.max())[0]+1
max_index = np.zeros(numpatches + 1, np.uint8)
max_index[mp] = 1
max_feature = max_index[labeled_array]
fin = max_feature^a
lArr, npa = ndimage.label( fin )
return
main()