失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python 3d绘图kmeans_Python爬虫与K-means聚类算法分析多数据图片主色方法

python 3d绘图kmeans_Python爬虫与K-means聚类算法分析多数据图片主色方法

时间:2022-04-24 14:02:29

相关推荐

python 3d绘图kmeans_Python爬虫与K-means聚类算法分析多数据图片主色方法

玩蛇网python爬虫与数据分析,本文结合python爬虫与K-means算法的使用,来分析图片主基色。色彩斑斓的一张图片,哪种颜色是它的主色调呢?今天就来讲讲如何用Python爬虫与K-means聚类分析图片主色方法。

今天我们拿电影的海报来举例吧。都知道第当一部电影要上映的时候,都会出许许多多漂亮的海报,不知道你有没有注意到。每种不同类别的电影海报图片,用的色调都是有自己的特定方向颜色。那么不同风格的电影海报对颜色有什么样的偏好呢?这就是我们今天要用Python爬虫与K-means聚类分析的重点所在。

首先用Python 爬虫从网页中抓取电影海报数据,同时将其储存到本地的电脑中,做为基础数据为下面做计算做准备。下载的图片种类分别为:惊悚片、喜剧、动画片和动作片。图片数据为112张,也就是112个数据源。

Python爬虫与K-means算法分析多数据图片主色方法,抓取图片部分源码如下:

#代码格式请自行调整!

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 action movies poster”

url = “/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”: pile(“”)})]

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。

图像格式转换部分源码如下:

#代码格式请自行调整!

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聚类分析多数据图片主色方法,就简单介绍到这里。

玩蛇网文章,转载请注明出处和文章网址:/code/graphics/gr5773.html

相关文章 Recommend

如果觉得《python 3d绘图kmeans_Python爬虫与K-means聚类算法分析多数据图片主色方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。