本周末,我第一次在hackathon中使用scikit-Image。在进行一些测试时,我发现api运行非常缓慢,尽管the page的底部说其脚本运行时间为4.780秒。每次运行我的矿井,都需要20分钟以上。
他们的示例代码对我不起作用,因为我无法使matplotlib正常工作。我试图进行调整,并一直使用PIL保存图像
import numpy as np
from PIL import Image
from skimage import data, img_as_float, img_as_ubyte
from skimage.segmentation import (morphological_chan_vese,
morphological_geodesic_active_contour, inverse_gaussian_gradient,
checkerboard_level_set)
def store_evolution_in(lst):
"""Returns a callback function to store the evolution of the
level sets in
the given list.
"""
def _store(x):
lst.append(np.copy(x))
return _store
imarray = np.asarray(Image.open("./images/bottle.jpg"))
# Morphological ACWE
image = img_as_float(imarray)
# Initial level set
init_ls = checkerboard_level_set(image.shape, 6)
# List with intermediate results for plotting the evolution
evolution = []
callback = store_evolution_in(evolution)
gimage = inverse_gaussian_gradient(image)
ls = morphological_geodesic_active_contour(gimage, 100, init_ls,
smoothing=1, balloon=-1,
threshold=0.69,
iter_callback=callback)
intls = img_as_ubyte(ls)
Image.fromarray(intls).save('./results/ls.jpg', 'JPEG')
我希望像他们的结果一样获得分段的图像(最终目标是只保留瓶中的深色液体)。但是,不仅运行时比其运行时长得多,而且它仅返回黑色图像。也许我做错了什么?
我的活动监视器说Python消耗了100%的CPU功率,但底部的CPU负载却表明用户消耗了9%的CPU,因此我只能假设并非所有内核都在使用。