こちらのサイトを参考にscikit-imageを動作テストさせてみた。
pipからインストールさせるとstable版がインストールされてしまうので、
gitから落としてpython setup.py install developするのが良いと思う。
インストールはこちらから。
ただ単にcoffeeでやっても仕方ないので、何か手持ちの画像で試してみる。
コードを下記のように書き換えた。
from skimage import graph, data, io, segmentation, color
from matplotlib import pyplot as plt
# img = data.coffee()
img = io.imread('test.jpg')
labels1 = segmentation.slic(img, compactness=30, n_segments=400)
out1 = color.label2rgb(labels1, img, kind='avg')
g = graph.rag_mean_color(img, labels1, mode='similarity')
labels2 = graph.cut_normalized(labels1, g)
out2 = color.label2rgb(labels2, img, kind='avg')
io.imsave('test_out1.png',out1)
io.imsave('test_out2.png',out2)
# plt.figure()
# io.imshow(out1)
# plt.figure()
# io.imshow(out2)
# io.show()
さっそく実行してみると・・・
‘module’ object has no attibute ‘rag_mean_color’
なんだコレ・・・。
しかもググっても解決策っぽいのが無い。
仕方ないのでscikit-imageのコードを見てみよう。
/to-site-packages-path/scikit_image-0.11dev-py2.7-linux-x86_64.egg/skimage/
graphの中をみてみると、__init__.pyにrag_mean_colorが書いてあるものの、肝心のメソッド本体がみっからない。
素直にgithubにあるdoc読んでみると
サンプルあるね・・・
plot_rag_mean_color.py
というファイルに
from skimage.future import graph
futureパスェ・・・
同じように指定してみる。
from skimage import data, io, segmentation, color
from skimage.future import graph
from matplotlib import pyplot as plt
# img = data.coffee()
img = io.imread('test.jpg')
labels1 = segmentation.slic(img, compactness=30, n_segments=400)
out1 = color.label2rgb(labels1, img, kind='avg')
g = graph.rag_mean_color(img, labels1, mode='similarity')
labels2 = graph.cut_normalized(labels1, g)
out2 = color.label2rgb(labels2, img, kind='avg')
io.imsave('test_out1.png',out1)
io.imsave('test_out2.png',out2)
# plt.figure()
# io.imshow(out1)
# plt.figure()
# io.imshow(out2)
# io.show()
無事動作。