使用Sklearn的img_to_graph

2 投票
1 回答
1779 浏览
提问于 2025-04-18 10:25

我有以下这段代码:

import cv2
import matplotlib.pyplot as plt
import numpy as np
from scipy import ndimage
from sklearn.feature_extraction import image
from sklearn.cluster import spectral_clustering

image = cv2.imread("/home/facu/holo.tif",0)
image = image


spectrum = np.fft.fftshift(np.fft.fft2(image))
intensity = 10*np.log(np.abs(spectrum))


mask = intensity.astype(bool)
img = intensity.astype(float)
graph = image.img_to_graph(img, mask=mask)
graph.data = np.exp(-graph.data/graph.data.std())

labels = spectral_clustering(graph, k=2, mode = 'arpack')
label_img = -np.ones(mask.shape)
label_im[mask] = labels

我想使用“谱聚类”这个功能,但遇到了这个错误:

AttributeError: 'numpy.ndarray'对象没有'img_to_graph'这个属性

我该怎么做才能把我的“强度”numpy数组转换成正确的img_to_graph属性呢?

1 个回答

2

你把导入的 image = sklearn.feature_extraction.image 给覆盖掉了,因为你又写了 image = cv2.imread("/home/facu/holo.tif",0)。这样一来,函数 img_to_graph 就不能用了。

解决办法是给其中一个改个名字,比如可以用

raw_img = cv2.imread("/home/facu/holo.tif",0)

然后把其他地方也相应地调整一下。

撰写回答