我尝试了您的更新代码,但工作正常。这正是我正在尝试的:
import PILfrom PIL import Imagefrom matplotlib import pyplot as pltim = Image.open('./color_gradient.png') w, h = im.size colors = im.getcolors(w*h)def hexenpre(rgb): r=rgb[0] g=rgb[1] b=rgb[2] return '#%02x%02x%02x' % (r,g,b)for idx, c in enumerate(colors): plt.bar(idx, c[0], color=hexenpre(c[1]))plt.show()
更新:
我认为matplotlib试图在每个小节周围放置黑色边框。如果条形太多,则条形太细而无法显示颜色。如果您拥有工具栏,则可以放大该图并看到这些条确实具有颜色。因此,如果通过以下方式设置边缘颜色:
for idx, c in enumerate(colors): plt.bar(idx, c[0], color=hexenpre(c[1]),edgecolor=hexenpre(c[1]))
有用!
要处理的图像:
结果:
分析
按tottime排序:
ncalls tottime percall cumtime percall filename:lineno(function) 1 23.424 23.424 24.672 24.672 {built-in method mainloop} 460645 8.626 0.000 8.626 0.000 {numpy.core.multiarray.array} 22941 7.909 0.000 18.447 0.001 C:Python27libsite-packagesmatplotlibartist.py:805(get_aliases) 6814123 3.900 0.000 3.900 0.000 {method 'startswith' of 'str' objects} 22941 2.244 0.000 2.244 0.000 {dir} 276714 2.140 0.000 2.140 0.000 C:Python27libweakref.py:243(__init__) 4336835 2.029 0.000 2.029 0.000 {getattr} 1927044 1.962 0.000 3.027 0.000 C:Python27libsite-packagesmatplotlibartist.py:886(is_alias) 114811 1.852 0.000 3.883 0.000 C:Python27libsite-packagesmatplotlibcolors.py:317(to_rgba) 69559 1.653 0.000 2.841 0.000 C:Python27libsite-packagesmatplotlibpath.py:86(__init__) 68869 1.425 0.000 11.700 0.000 C:Python27libsite-packagesmatplotlibpatches.py:533(_update_patch_transform) 161205 1.316 0.000 1.618 0.000 C:Python27libsite-packagesmatplotlibcbook.py:381(is_string_like) 1 1.232 1.232 1.232 1.232 {gc.collect} 344698 1.116 0.000 1.513 0.000 C:Python27libsite-packagesmatplotlibcbook.py:372(iterable) 22947 1.111 0.000 3.768 0.000 {built-in method draw_path} 276692 1.024 0.000 3.164 0.000 C:Python27libsite-packagesmatplotlibtransforms.py:80(__init__) 2 1.021 0.510 1.801 0.900 C:Python27libsite-packagesmatplotlibcolors.py:355(to_rgba_array) 22947 0.818 0.000 14.677 0.001 C:Python27libsite-packagesmatplotlibpatches.py:371(draw)183546/183539 0.793 0.000 2.030 0.000 C:Python27libsite-packagesmatplotlibunits.py:117(get_converter) 138006 0.756 0.000 1.267 0.000 C:Python27libsite-packagesmatplotlibtransforms.py:126(set_children)
按累积时间排序
ncalls tottime percall cumtime percall filename:lineno(function) 1 0.001 0.001 84.923 84.923 C:Python27test.py:23(imageProcess) 1 0.013 0.013 44.079 44.079 C:Python27libsite-packagesmatplotlibpyplot.py:2080(bar) 1 0.286 0.286 43.825 43.825 C:Python27libsite-packagesmatplotlibaxes.py:4556(bar) 1 0.000 0.000 40.533 40.533 C:Python27libsite-packagesmatplotlibpyplot.py:123(show) 1 0.000 0.000 40.533 40.533 C:Python27libsite-packagesmatplotlibbackend_bases.py:69(__call__) 22943 0.171 0.000 24.964 0.001 C:Python27libsite-packagesmatplotlibpatches.py:508(__init__) 1 0.000 0.000 24.672 24.672 C:Python27libsite-packagesmatplotlibbackendsbackend_tkagg.py:68(mainloop) 1 0.000 0.000 24.672 24.672 C:Python27liblib-tkTkinter.py:323(mainloop) 1 23.424 23.424 24.672 24.672 {built-in method mainloop} 22947 0.499 0.000 24.654 0.001 C:Python27libsite-packagesmatplotlibpatches.py:55(__init__) 22941 0.492 0.000 20.180 0.001 C:Python27libsite-packagesmatplotlibartist.py:1136(setp) 22941 0.135 0.000 18.730 0.001 C:Python27libsite-packagesmatplotlibartist.py:788(__init__) 22941 7.909 0.000 18.447 0.001 C:Python27libsite-packagesmatplotlibartist.py:805(get_aliases) 72/65 0.071 0.001 17.118 0.263 {built-in method call} 24/12 0.000 0.000 17.095 1.425 C:Python27liblib-tkTkinter.py:1405(__call__) 22941 0.188 0.000 16.647 0.001 C:Python27libsite-packagesmatplotlibaxes.py:1476(add_patch) 1 0.000 0.000 15.861 15.861 C:Python27libsite-packagesmatplotlibbackendsbackend_tkagg.py:429(show) 1 0.000 0.000 15.861 15.861 C:Python27liblib-tkTkinter.py:909(update) 1 0.000 0.000 15.846 15.846 C:Python27libsite-packagesmatplotlibbackendsbackend_tkagg.py:219(resize) 1 0.000 0.000 15.503 15.503 C:Python27libsite-packagesmatplotlibbackendsbackend_tkagg.py:238(draw)
似乎所有时间都花在matplotlib中。如果要加快速度,可以找到其他绘图工具或减少“条”的数量。尝试自己在画布上使用矩形来做。
定时:
- 上面发布的代码:75s
- 为每一个画一条线,即plt.plot([n,n],[0,count]等。):95s
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)