0
所以這是一個非常奇怪的問題,我一直在得到。我基本上試圖創建一個練習碼書,它使用由Python中的kmeans算法聚類的圖像的SIFT特徵。然而,每當我運行代碼,我得到以下錯誤Scipy.cluster.vq.kmeans「list has no attribute shape」
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\Python\assignment2\SIFT_Dectection.py", line 34, in <module>
codebook, dis = cluster.vq.kmeans(codebook_construction(files[:20]),3)
File "C:\Python27\lib\site-packages\scipy\cluster\vq.py", line 513, in kmeans
No = obs.shape[0]
AttributeError: 'list' object has no attribute 'shape'
我認爲這是對SciPy的庫中的VQ腳本中的錯誤。不過,我還有其他朋友也在爲此工作,我使用與scipy庫完全相同的代碼,但我仍然遇到這個問題。我也嘗試徹底卸載Python重新安裝一切。我在Windows 7 btw上運行的東西。我使用的代碼如下所示:
import cv2
import glob
from scipy import cluster
files = glob.glob('101_ObjectCategories/*/*.jpg')
def codebook_construction(im):
codebook = []
for image in im:
img = cv2.imread(image)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
sift = cv2.SIFT()
kp, desc = sift.detectAndCompute(gray, None)
if codebook == []:
codebook = desc
else:
codebook = np.vstack((codebook, desc))
return codebook
codebook, dis = cluster.vq.kmeans(codebook_construction(files[:20]),3)
那裏的glob函數需要我從加州理工學院下載的圖像庫。我已經搜索了高和低的答案,但似乎沒有人有類似的問題。希望我可以在這裏得到一些指導