![](/img/trans.png)
[英]Are there advantages of using sklearn KMeans versus SciPy kmeans?
[英]UnboundLocalError using Kmeans in scipy
我試圖學習有關Python中圖像處理的更多信息,作為該過程的一部分,我正在閱讀的書中進行一些練習。 在一個練習中,我試圖對圖像中平均像素顏色進行kmeans聚類。 下面的代碼幾乎完全來自該示例,但是我不斷收到錯誤消息(如下所示)。
文件“ C:/Users/xxx/gitStuff/version-control/image/data/practiceCh6.py”,第31行,質心,方差= kmeans(功能,3)
文件“ C:\\ Users \\ xxx \\ AppData \\ Local \\ Continuum \\ Anaconda \\ Lib \\ site-packages \\ scipy \\ cluster \\ vq.py”,第524行,以kmeans表示= best_book,best_dist
UnboundLocalError:分配前已引用局部變量“ best_book”
代碼如下:
from PIL import Image
from scipy.cluster.vq import kmeans,vq
from scipy.misc import imresize
from numpy import *
steps = 50
im = array(Image.open('frontside.jpg'))
dx = im.shape[0]
dy = im.shape[1]
#compute color features for each region
features =[]
for x in range(steps):
for y in range(steps):
R = mean(im[x*dx:(x+1)*dx,y*dy:(y+1)*dy,0])
G = mean(im[x*dx:(x+1)*dx,y*dy:(y+1)*dy,1])
B = mean(im[x*dx:(x+1)*dx,y*dy:(y+1)*dy,2])
features.append([R,G,B])
features = array(features,'f') #make into array
#cluster
centroids,variance = kmeans(features,3)
code,distance = vq(features,centroids)
#create image with clulster labels
codeim = code.reshape(steps,steps)
codeim = imresize(codeim,im.shape[:2],interp='nearest')
figure()
imshow(codeim)
show()
任何關於什么是錯的建議將不勝感激。
我對圖像處理不熟悉,但是通過在代碼中添加簡單的打印語句,您將看到數組中的值是“ nan”。
for x in range(steps):
for y in range(steps):
R = mean(im[x*dx:(x+1)*dx,y*dy:(y+1)*dy,0])
G = mean(im[x*dx:(x+1)*dx,y*dy:(y+1)*dy,1])
B = mean(im[x*dx:(x+1)*dx,y*dy:(y+1)*dy,2])
features.append([R,G,B])
features = array(features,'f') #make into array
print features
返回值:
[[ 186.93768311 159.18690491 157.92678833]
[ nan nan nan]
[ nan nan nan]
...,
[ nan nan nan]
[ nan nan nan]
[ nan nan nan]]
您不能在nan上運行K-means,我會回去檢查您如何分配R,G,B。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.