0

我为图像分割重新实现 SLIC 只是为了好玩。但我很懒,我不想编写一个函数来连接所有集群,所以我决定_enforce_label_connectivity_cython()从 skimage 使用,但我收到 Buffer dtype mismatch 的错误,我现在不知道如何解决它

在此处输入图像描述.

4

1 回答 1

0

的数据类型np.expand_dims(boundaries, axis=0),即数组内元素的类型,不是 Cython 函数所期望的。它期望Py_ssize_twhich 是一种取决于您的平台的类型,但它正在获取一个类型数组,long这意味着np.int64. 要获得正确的类型,我认为您可以这样做:

labels = _enforce_label_connectivity_cython(
    np.expand_dims(boundaries, axis=0).astype(np.intp),
    min_size,
    max_size,
)

如果这不起作用,请尝试.astype(np.int32). 同样,确切的答案取决于您的操作系统和 Python 版本,但如果我没记错的话,np.intp应该是匹配的正确类型Py_ssize_t

于 2020-04-24T06:25:58.330 回答