基于Python查找图像中最常见的颜色

重磅干货,第一时间送达

01. 准备工作

02. 常用方法

img_temp = img.copy()img_temp[:,:,0], img_temp[:,:,1], img_temp[:,:,2] = np.average(img, axis=(0,1))
img_temp_2 = img_2.copy()img_temp_2[:,:,0], img_temp_2[:,:,1], img_temp_2[:,:,2] = np.average(img_2, axis=(0,1))
show_img_compar(img, img_temp)show_img_compar(img_2, img_temp_2)
img_temp = img.copy()unique, counts = np.unique(img_temp.reshape(-1, 3), axis=0, return_counts=True)img_temp[:,:,0], img_temp[:,:,1], img_temp[:,:,2] = unique[np.argmax(counts)]
img_temp_2 = img_2.copy()unique, counts = np.unique(img_temp_2.reshape(-1, 3), axis=0, return_counts=True)img_temp_2[:,:,0], img_temp_2[:,:,1], img_temp_2[:,:,2] = unique[np.argmax(counts)]
show_img_compar(img, img_temp)show_img_compar(img_2, img_temp_2)

def palette(clusters): width=300 palette = np.zeros((50, width, 3), np.uint8) steps = width/clusters.cluster_centers_.shape[0] for idx, centers in enumerate(clusters.cluster_centers_): palette[:, int(idx*steps):(int((idx+1)*steps)), :] = centers return palette

clt_1 = clt.fit(img.reshape(-1, 3))show_img_compar(img, palette(clt_1))
clt_2 = clt.fit(img_2.reshape(-1, 3))show_img_compar(img_2, palette(clt_2))
def palette(clusters): width=300 palette = np.zeros((50, width, 3), np.uint8) steps = width/clusters.cluster_centers_.shape[0] for idx, centers in enumerate(clusters.cluster_centers_): palette[:, int(idx*steps):(int((idx+1)*steps)), :] = centers return palette
clt_3 = KMeans(n_clusters=3)clt_3.fit(img_2.reshape(-1, 3))show_img_compar(img_2, palette(clt_3))
from collections import Counter
def palette_perc(k_cluster): width = 300 palette = np.zeros((50, width, 3), np.uint8)
n_pixels = len(k_cluster.labels_) counter = Counter(k_cluster.labels_) # count how many pixels per cluster perc = {} for i in counter: perc[i] = np.round(counter[i]/n_pixels, 2) perc = dict(sorted(perc.items()))
#for logging purposes print(perc) print(k_cluster.cluster_centers_)
step = 0
for idx, centers in enumerate(k_cluster.cluster_centers_): palette[:, step:int(step + perc[idx]*width+1), :] = centers step += int(perc[idx]*width+1)
return palette
clt_1 = clt.fit(img.reshape(-1, 3))show_img_compar(img, palette_perc(clt_1))
clt_2 = clt.fit(img_2.reshape(-1, 3))show_img_compar(img_2, palette_perc(clt_2))
03. 结论
(0)

相关推荐

  • Python 实现图片转字符画,静态图、GIF 都能转

    来源:Python 技术「ID: pythonall」 字符画是一种由字母.标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画. 静态图片 ...

  • 图像旋转90/180 opencv坐标系

    问题描述: 图像旋转90.180.270等 使用类似下面的代码,会有黑边,图像变形之类的问题 其实windows系统自带类似的功能,但是我需要批量处理图像,因此尝试自己写 算法基础: 这种直角的旋转, ...

  • 彩色直方图(源码实现)

    原理:和灰度直方图一样,只是将一个灰度通道换成了三个的RGB通道import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2 ...

  • python+opencv图像处理(十一)

    图像镜像 图像的镜像指的是将图像以某条线为中心进行镜像对换. 图像的镜像根据翻转的方向可分为水平镜像翻转.垂直镜像翻转和对角镜像翻转3种. 水平镜像翻转指的是将图像以y轴为中心进行左右镜像对换. 垂直 ...

  • python+opencv图像处理(四十二)

    Kirsch算子 1.Kirsch算子 Kirsch算子是R.Kirsch提出来一种边缘检测新算法,它采用8个模板对图像上的每一个像素点进行卷积求导数,这8个模板代表8个方向,对图像上的8个特定边缘方 ...

  • 使用深度学习进行视频修剪

    介绍 在本教程中,我们将构建深度学习任务,自动修剪我们的视频使用标志!这样的应用程序可以让那些不擅长编辑视频的人们的生活变得更容易. 我们使用像"拇指朝上"和"拇指朝下& ...

  • Tensorflow实战:Discuz验证码识别

    选择"星标"公众号 重磅干货,第一时间送达! 写在最前面 验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册.灌水.发垃圾 ...

  • 如何Super Vectorizer从Mac 上的图像中删除多余的颜色区域?

    如何去除多余的颜色区域? 步骤 1.在 Mac 上打开 Super Vectorizer,导入您的图像 步骤 2.切换到模式 2 步骤 3.减少颜色数量 步骤 4.增强边缘 步骤 5.删除小区域 步骤 ...

  • Python | 有序序列中元素的查找问题解决方法

    问题描述示例:如何查找有序序列中某一的元素输入:[1,2,3,4,5,6,--,100]   61 #查找的元素输出:61解决方案查找元素.一般地,我们可以用for循环进行遍历,再用if语句进行查找. ...

  • 基于Pyhton的图像隐写术--如何隐藏图像中的数据

    重磅干货,第一时间送达 隐秘术是在任何文件中隐藏秘密数据的艺术.秘密数据可以是任何格式的数据,例如文本,甚至是文件.简而言之,隐写术的主要目的是在任何文件(通常是图像,音频或视频)中隐藏预期的信息,而 ...

  • Python中列表常见的方法有哪些?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • 说说Python中HTTP常见响应状态码?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • (2条消息) 基于python中jieba包的中文分词中详细使用(一)

    文章目录 基于python中jieba包的中文分词中详细使用(一) 01.前言 02.jieba的介绍 02.1 What 02.2特点 02.3安装与使用 02.4涉及到的算法 03.主要功能 03 ...

  • 干货出炉:油类记录薄常见记录问题及检查中的常见缺陷归总

    轮机长/三管轮填写<油类记录簿>前要仔细阅读<油类记录簿>首页中的注意事项,严格按照相关的要求进行填写,具体要注意如下问题: 1.大部分公司基本要求<油类记录簿>的 ...

  • 生活中最常见的皮肤病联合用药,早知道早预防

    皮肤是人体最外层的组织,由于直接接触外部环境,容易受到刺激,从而发生皮肤病,现在已知的皮肤病种类有1000多种,但是大多都很少见,日常生活中常见的皮肤病其实就那么几种,今天就给大家具体介绍一下. 常见 ...

  • 高考中最常见的7种分数线,还弄不懂的赶紧看看!

    高校招生录取中,会涉及各种不同类型的数据,省控线.投档线.实录线.专业线.位次.线差.级差--让很多人头痛不已. 今天给大家详细解读高考志愿填报和录取中各种分数线,明白其中的含义才能更充分利用各种数据 ...