Я пытаюсь узнать больше об обработке изображений в Python и, как часть процесса, делаю некоторые упражнения в книге, которую я читаю. В одном упражнении я пытаюсь сделать kmeans кластеризацию среднего пиксельного цвета в изображении. Нижеприведенный код довольно дословно из примера, но я продолжаю получать ошибку (складывается следующим образом).UnboundLocalError, используя Kmeans в scipy
файл "C: /Users/xxx/gitStuff/version-control/image/data/practiceCh6.py", строка 31, в центроидах, дисперсия = kmeans (особенности, 3)
Файл «C : \ Users \ ххх \ AppData \ Local \ Continuum \ Anaconda \ Lib \ сайт-пакеты \ SciPy \ кластер \ 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()
Любые советы о том, что может быть неправильным, будут высоко оценены.
Спасибо, Кевин. Оказалось, что я пропустил разделение dx и xy по шагам, которые разрешили проблему. Плохое внимание к деталям с моей стороны. – chemnteach