Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案

文章目录

    • 导入模块并加载图片
    • 提取颜色并整合成表格
    • 绘制图表
    • 实战环节
      • 关于Python技术储备
        • 一、Python所有方向的学习路线
        • 二、Python基础学习视频
        • 三、精品Python学习书籍
        • 四、Python工具包+项目源码合集
        • ①Python工具包
        • ②Python实战案例
        • ③Python小游戏源码
        • 五、面试资料
        • 六、Python兼职渠道


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

Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第1张图片

在示例照片当中有着各种各样的颜色,我们将通过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

Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第2张图片

提取颜色并整合成表格

我们调用的是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

Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第3张图片

绘制图表

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

Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第4张图片

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

imagebox = OffsetImage(img, zoom=2.3)
ab = AnnotationBbox(imagebox, (0, 0))
ax1.add\_artist(ab)

output

Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第5张图片

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

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

Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第6张图片

实战环节

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

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实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第7张图片


关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第8张图片
一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Python实现艺术设计?提取图片中颜色并绘制成可视化图表,从大师作品中提取配色方案_第9张图片

你可能感兴趣的:(python,开发语言,深度学习,学习,opencv,计算机视觉,经验分享)