python生成可视化图表,python图片上色

  python生成可视化图表,python图片上色

  今天边肖给大家分享一个有趣的可视化技术,就是如何用Python语言从图片中提取颜色,绘制成可视化图表。有兴趣的可以试试。

  00-1010导入模块加载图片提取颜色整合成表格绘制图表。今天,边肖将为你分享一个有趣的视觉化技巧。如何从图片中提取颜色并绘制成可视化图表,如下图所示。

  样本照片中有各种颜色。我们会通过Python中的可视化模块和opencv模块来识别照片中的所有颜色元素,并添加到可视化图表的颜色匹配中。

  

目录

  然后按照惯例,第一步是导入模块,用于可视化的模块是matplotlib模块。我们从图片中提取颜色后,会保存在颜色映射表中,所以要使用colormap模块,我们还需要导入它。

  importnumpyasnp

  importpandasaspd

  importmatplotlib.pyplotasplt

  importmatplotlib . patchesapatches

  importmatplotlib.imageasmpimg

  fromPILimportImage

  frommatplotlib . offsetboximportoffsetimage,AnnotationBbox

  importcv2

  import text colors

  fromcolormapimportrgb2hex

  那我们先加载图片吧。代码如下所示

  输入名称=测试1.png

  img=plt.imread(input_name)

  plt.imshow(img)

  plt.axis(“关”)

  plt.show()

  输出

  

导入模块并加载图片

  我们调用extcolors模块从图片中提取颜色,输出结果是以RGB形式呈现的颜色。代码如下所示

  colors _ x=ext colors . ext _ from _ path(img _ URL,tolerance=12,limit=12)

  颜色_x

  输出

  ([((3,107,144),180316),

  ((17,129,140),139930),

  ((89,126,118),134080),

  ((125,148,154),20636),

  ((63,112,126),18728),

  ((207,220,226),11037),

  ((255,255,255),7496),

  ((28,80,117),4972),

  ((166,191,198),4327),

  ((60,150,140),4197),

  ((90,94,59),3313),

  ((56,66,39),1669)],

  538200)

  我们将上述结果集成到一个DataFrame数据集,代码如下

  defcolor_to_df(输入颜色):

  colors_pre_list=str(input_c

  olor).replace(([(, ).split(, ()[0:-1]

      df_rgb = [i.split(), )[0] + ) for i in colors_pre_list]

      df_percent = [i.split(), )[1].replace(), ) for i in colors_pre_list]

      # 将RGB转换成十六进制的颜色

      df_color_up = [rgb2hex(int(i.split(", ")[0].replace("(", "")),

                             int(i.split(", ")[1]),

                             int(i.split(", ")[2].replace(")", ""))) for i in df_rgb]

      df = pd.DataFrame(zip(df_color_up, df_percent), columns=[c_code, occurence])

      return df

  我们尝试调用上面我们自定义的函数,输出的结果至DataFrame数据集当中

  

df_color = color_to_df(colors_x)

  df_color

  output

  

  

  

绘制图表

  接下来便是绘制图表的阶段了,用到的是matplotlib模块,代码如下

  

fig, ax = plt.subplots(figsize=(90,90),dpi=10)

  wedges, text = ax.pie(list_precent,

                        labels= text_c,

                        labeldistance= 1.05,

                        colors = list_color,

                        textprops={fontsize: 120, color:black}

                       )

  plt.setp(wedges, width=0.3)

  ax.set_aspect("equal")

  fig.set_facecolor(white)

  plt.show()

  output

  

  从出来的饼图中显示了每种不同颜色的占比,我们更进一步将原图放置在圆环当中,

  

imagebox = OffsetImage(img, zoom=2.3)

  ab = AnnotationBbox(imagebox, (0, 0))

  ax1.add_artist(ab)

  output

  

  最后制作一张调色盘,将原图中的各种不同颜色都罗列开来,代码如下

  

## 调色盘

  x_posi, y_posi, y_posi2 = 160, -170, -170

  for c in list_color:

      if list_color.index(c) <= 5:

          y_posi += 180

          rect = patches.Rectangle((x_posi, y_posi), 360, 160, facecolor = c)

          ax2.add_patch(rect)

          ax2.text(x = x_posi+400, y = y_posi+100, s = c, fontdict={fontsize: 190})

      else:

          y_posi2 += 180

          rect = patches.Rectangle((x_posi + 1000, y_posi2), 360, 160, facecolor = c)

          ax2.add_artist(rect)

          ax2.text(x = x_posi+1400, y = y_posi2+100, s = c, fontdict={fontsize: 190})

  ax2.axis(off)

  fig.set_facecolor(white)

  plt.imshow(bg)       

  plt.tight_layout()

  output

  

  

  

实战环节

  这一块儿是实战环节,我们将上述所有的代码封装成一个完整的函数

  

def exact_color(input_image, resize, tolerance, zoom):

      output_width = resize

      img = Image.open(input_image)

      if img.size[0] >= resize:

          wpercent = (output_width/float(img.size[0]))

          hsize = int((float(img.size[1])*float(wpercent)))

          img = img.resize((output_width,hsize), Image.ANTIALIAS)

          resize_name = resize_+ input_image

          img.save(resize_name)

      else:

          resize_name = input_image

      fig.set_facecolor(white)

      ax2.axis(off)

      bg = plt.imread(bg.png)

      plt.imshow(bg)       

      plt.tight_layout()

      return plt.show()

  exact_color(test_2.png, 900, 12, 2.5)

  output

  

  以上就是Python实现提取图片中颜色并绘制成可视化图表的详细内容,更多关于Python提取图片颜色的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: