我为图像分割重新实现 SLIC 只是为了好玩。但我很懒,我不想编写一个函数来连接所有集群,所以我决定_enforce_label_connectivity_cython()
从 skimage 使用,但我收到 Buffer dtype mismatch 的错误,我现在不知道如何解决它
问问题
210 次
1 回答
0
的数据类型np.expand_dims(boundaries, axis=0)
,即数组内元素的类型,不是 Cython 函数所期望的。它期望Py_ssize_t
which 是一种取决于您的平台的类型,但它正在获取一个类型数组,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 回答