python 3d绘图kmeans_Python爬虫与K-means聚类算法分析多数据图片主色方法
玩蛇网python爬虫与数据分析,本文结合python爬虫与K-means算法的使用,来分析图片主基色。色彩斑斓的一张图片,哪种颜色是它的主色调呢?今天就来讲讲如何用Python爬虫与K-means聚类分析图片主色方法。
今天我们拿电影的海报来举例吧。都知道第当一部电影要上映的时候,都会出许许多多漂亮的海报,不知道你有没有注意到。每种不同类别的电影海报图片,用的色调都是有自己的特定方向颜色。那么不同风格的电影海报对颜色有什么样的偏好呢?这就是我们今天要用Python爬虫与K-means聚类分析的重点所在。
首先用Python 爬虫从网页中抓取电影海报数据,同时将其储存到本地的电脑中,做为基础数据为下面做计算做准备。下载的图片种类分别为:惊悚片、喜剧、动画片和动作片。图片数据为112张,也就是112个数据源。
Python爬虫与K-means算法分析多数据图片主色方法,抓取图片部分源码如下:
#代码格式请自行调整!www.iplaypy.com
from bs4 import BeautifulSoup
import requests
import re
import urllib2
import os
import numpy as np
def get_soup(url):
return BeautifulSoup(requests.get(url).text)
image_type = “action movies”
query = “movie 2014 action movies poster”
url = “http://global.bing.com/images/search?q=” + query + “&qft=+filterui:imagesize-large&FORM=R5IR5″
soup = get_soup(url)
images = [a[‘src’] for a in soup.find_all(“img”, {“src”: re.compile(“mm.bing.net”)})]
for img in images:
raw_img = urllib2.urlopen(img).read()
cntr = len([i for i in os.listdir(“images”) if image_type in i]) + 1
f = open(“images/” + image_type + “_” + str(cntr), “wb”)
f.write(raw_img)
f.close()
为了方便提取图片的颜色信息,我们需要对图片的格式做下处理。需要将图像转换为 RGB 像素矩阵。好比于 200*200 像素的图片,将其转换成含有 40000 个像素信息的对象。现此同时要做的事情还有,为了保持数据集的大小,还需要再将图像的大小做一下,这里统一设定为200*200。
图像格式转换部分源码如下:
#代码格式请自行调整!www.iplaypy.com
def get_points(img):
points = []
w, h = img.size
for count, color in img.getcolors(w * h):
points.append(Point(color, 3, count))
return points
rtoh = lambda rgb: ‘#%s’ % ”.join((‘%02x’ % p for p in rgb))
提取图片中颜色的信息:
这里用到了 K 均值算法和颜色信息将海报分成许多不同的类别。
首先试了 k=3, k=5和k=10三种模型,但由于大多数海报通常都具有黑色的字体和边框,所以前两种模型无法获取海报中的主要颜色信息。最终选择了k=10的模型,并利用该算法处理 112 张海报,得到了 1120 种颜色信息。
部分结果如下图所示:
其实K 均值算法还是会存在一些不足之处的:该算法对初始值非常敏感,这会产生一些不想要的结果。在下面这两张海报图片中我们就可以看出,该算法无法获取金色或橘黄色的信息。
3D 散点图,分析结果如下:
针对不同种类的图片,做出的RGB数据绘制三维散点图。每个点代表图片的一个颜色。通过比较分析,可以看出四张散点图中,惊悚片的图片以暗黑色和红色为主,而喜剧和动画片则会根据不同的电影主题选择不同的配色。
转换颜色信息:
要在1120 种颜色中提取一些特定的模式的数据是很难的。所以需要降低颜色的维度。
降低颜色维度的操作方法是:
(1)需要将颜色信息转换到 Lab 色彩空间中
(2)再利用Python中的 Delta E equations和colormath包来计算,图片中的颜色和基础颜色之间存在的视觉差异程度如何。
通过最小距离法,将这些颜色分成17个类别,如下图所示:
电影类型对比数据:转换数据后,计算出每个电影类型中所包含的基本色数量。
通过绘制的数据从图中的基本色量信息,我们可以看到黑色、灰色和白色这三种颜色是图片最常见色。主要原因是这类电影宣传的海报都会突出标题之类,大都会使用加深的色调。
这中Python爬虫与K-means聚类分析合作得出的结果。Python爬虫与K-means聚类分析多数据图片主色方法,就简单介绍到这里。
玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/graphics/gr5773.html
相关文章 Recommend
python 3d绘图kmeans_Python爬虫与K-means聚类算法分析多数据图片主色方法相关推荐
- OpenCV的k - means聚类 -对图片进行颜色量化
OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...
- OpenCV官方文档 理解k - means聚类
理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...
- 基于python的K-means聚类提取图片主色
基于python+opencv的彩色图片主色提取--利用K-means聚类算法 一.K-means聚类算法 1.K-means算法原理 2. K-means聚类算法流程 3.sklearn库中skle ...
- python编写图片主色转换脚本
作者:吴海超 个人网站: www.wuhaichao.com 最近由于项目特需老是替换主题颜色,同时app里一些资源icon图片主色也要改,美工不提供切图只能靠自己了,开始想在iconfont上面找但 ...
- python 3d绘图-python - 轻松学会Matplotlib 3D绘图
大多数数据可视化教程都给出了大致相同的基本内容:散点图,折线图,箱形图,条形图和热图等,一般都是2D平面图. 但是,如果我们希望跟进一步,该怎么办? 2D图只能显示一对x--y轴之间的关系;而3D图可 ...
- python 3d绘图 汉字_完美解决Python matplotlib绘图时汉字显示不正常的问题
Matplotlib是一个很好的作图软件,但是python下默认不支持中文,所以需要做一些修改,方法如下: 1.在python安装目录的Lib目录下创建ch.py文件. 文件中代码为: 保存,以后通过 ...
- python 3D绘图 基础
环境安装 见另一篇博文 链接 库安装 pip install -i https://pypi.douban.com/simple matplotlib 代码 import numpy as np im ...
- python 3d绘图 拖动_在python中以交互方式旋转3D绘图 - matplotlib
我想知道如何以this视频中描述的方式交互式旋转3D绘图(如果您从上方或下方或从右侧或左侧决定).我可以在spyder或jupyter Notebook中生成3D绘图,但之后它仍然是静态的,我无法与它 ...
- python 3d绘图旋转_如何更改Matplotlib 3d旋转(mplot3d)的鼠标交互样式?
我绘制了3D图,并用于quiver绘制x,y和z轴. 在matplotlib的交互式绘图中,我可以拖动和旋转3D绘图,但是存在一个问题: 当我拖动绘图时,似乎Z轴限制在一个平面上.无论我如何拖动绘图, ...
最新文章
- hadoop无法访问50070端口怎么办?
- centos7 mariadb mysql max_connections=214 无法修改的问题
- 深入理解groupByKey、reduceByKey区别——本质就是一个local machine的reduce操作
- SAP Commerce Cloud(原Hybris)和SAP Cloud for Customer(C4C)的SQL trace工具
- command对象的三个主要的方法 1119
- Redis分布式锁的实现原理看这篇就够了~
- 【Spark Summit East 2017】使用Spark MLlib和Apache Solr构建实时实体类型识别系统
- Python中*args和**kwargs的解释
- 1.Spring框架入门
- 支持乱序执行的RAFT协议 ppt
- Linux与Windows编译器的区别
- 自动驾驶 7-1 Carla 概述 - 自动驾驶汽车模拟Carla Overview - Self-Driving Car Simulation
- 大话2虚拟服务器怎么弄,大话西游2公益服风云1.0虚拟机镜像手工启动服务端+启动教程+客户端IP修改教程+数据库工具...
- python问题unindent does not match any outer indentation level在pycharm平台的解决方法
- 优秀数智生态伙伴|上海用诚软件廖晓军:以人才迭代推动云转型,实现专业化发展...
- 五行各500字,2位字符串组合,数据量大而采取分段输出表格形式方程式
- TCR-seq(T细胞受体测序)
- 引导魔女之力,征服星辰大海 主线篇: 重要事情说三遍: 推主线!推主线!!推主线!!! 简述: 1.本篇仅主线,涉及到的技巧全职业都可以参考; 2.考虑到萌新刚玩没有护卫者系统,故禁护
- 页面提交处理时候显示“正在处理,请稍后……”,防止二次提交功能。
- 微信公众号数据2019_2019年2月全国Top100购物中心微信公众号榜单