资讯专栏INFORMATION COLUMN

Python完成提取图片中色调并制作成可视化图表

89542767 / 331人阅读

  接下来小编来给大家分享一种有意思的数据可视化方法,便是如何运用Python语言表达即从照片中提取颜色随后制作成可视化图表,有兴趣的话可以试一试。


  今天小编来为大家分享一个有趣的可视化技巧,如何从图片中提取颜色然后绘制成可视化图表,如下图所示

01.png

  在示例照片当中有着各种各样的颜色,我们将通过Python中的可视化模块以及opencv模块来识别出图片当中所有的颜色要素,并且将其添加到可视化图表的配色当中


  导入模块并加载图片


  那么按照惯例,第一步一般都是导入模块,可视化用到的模块是matplotlib模块,我们将图片中的颜色抽取出来之后会保存在颜色映射表中,所以要使用到colormap模块,同样也需要导入进来


  import numpy as np
  import pandas as pd
  import matplotlib.pyplot as plt
  import matplotlib.patches as patches
  import matplotlib.image as mpimg
  from PIL import Image
  from matplotlib.offsetbox import OffsetImage,AnnotationBbox
  import cv2
  import extcolors
  from colormap import rgb2hex


  然后我们先来加载一下图片,代码如下


  input_name='test_1.png'
  img=plt.imread(input_name)
  plt.imshow(img)
  plt.axis('off')
  plt.show()


  output

02.png

  提取颜色并整合成表格


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


  colors_x=extcolors.extract_from_path(img_url,tolerance=12,limit=12)
  colors_x

  output


  ([((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数据集,代码如下


  def color_to_df(input_color):
  colors_pre_list=str(input_color).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

03.png

  绘制图表


  接下来便是绘制图表的阶段了,用到的是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

04.png

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


  ##调色盘
  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

05.png

  实战环节


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


  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

07.png

  综上所述,这篇文章就给大家介绍到这里了,希望可以给各位读者带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128689.html

相关文章

  • python大大数据视化matplotlib制做复式统计表案例

      文中关键给大家介绍了python大大数据可视化matplotlib制做复式统计表的案例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪  plt.plot()函数公式各主要参数分析  plt.plot()函数的作用是制做复式统计表,它主要参数有许多,常用的函数主要参数如下所示:  plt.plot(x,y,color,linestyle,linewi...

    89542767 评论0 收藏0
  • 这里有8个流行的Python视化工具包,你喜欢哪个?

    摘要:下面,作者介绍了八种在中实现的可视化工具包,其中有些包还能用在其它语言中。当提到这些可视化工具时,我想到三个词探索数据分析。还可以选择样式,它模拟了像和等很流行的美化工具。有很多数据可视化的包,但没法说哪个是最好的。 showImg(https://segmentfault.com/img/remote/1460000019029121); 作者:Aaron Frederick 喜欢用...

    testbird 评论0 收藏0
  • Python学习笔记:数据视化(一)

    摘要:当数据发生变化时,这种演变过程随之发生。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 showImg(https://segmentfault.com/img/bVbnkP1?w=751&h=558); python相关 基础概念 数据:离散的,客观事实的数字表示 信息:处理后的数据,为实际问题提供答案   - 为数据提供一种关系或一个关联后,数据就成了信...

    Crazy_Coder 评论0 收藏0
  • python热力地图的一体化案例

      热力地图的适用场景有叙述数据信息和空间的集中程度上,普遍有城市热力图、地区热力地图,叙述好几个自变量中间关联性多少程度上,文中关键为大家介绍了有关python热力地图完成的资料,必须的小伙伴可以借鉴一下  一、数据信息无量纲处理后的(热力地图)  1.数据信息无量纲处理后的(仅详细介绍文中需要用到的方式):min-max归一化处理  此方法应该是原始记录开展线性变换,把它投射到[0,1]中间,...

    89542767 评论0 收藏0
  • 常用的数据视化工具

    摘要:俗话说,不会使用工具来完成任务的都是进化不完全的表现,大数据时代,可视化已经深深钻进我们的生活,使用可视化工具也变的相当普遍,今天我们来总结下当下可视化工具都有哪些。是一个地图库,主要面向数据可视化用户。 俗话说,不会使用工具来完成任务的都是进化不完全的表现,大数据时代,可视化已经深深钻进我们的生活,使用可视化工具也变的相当普遍,今天我们来总结下当下可视化工具都有哪些。 showImg...

    philadelphia 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<