python+jQuery 实现颜色比重分析
1.使用到的python库
time
webbrowser
cv2
collections
2.创作思路:利用cv2库中的方法逐行扫描图片的每一个像素点,获取每一个像素点的 rgb值 并进行信息的处理,串联成一个巨大的array,接着利用collections中的Counter对象,对收集到的图片信息进行统计排序,最终将会产生一个经过排序的字典,由于未处理的数据将会返回所有的结果以及对应的出现次数,所以对此增加了一个处理
Counter©.most_common(5) 例如这样将会返回排位 前5 的数
接着将信息写入一个本地的results.txt文件
之后就是jquery的发生,通过对 txt文件的处理,对字符串进行处理巴拉巴拉,并进行渲染,即可获得所需要的信息;
下面展示一些 内联代码片

import time
import webbrowser
from cv2 import cv2
from collections import Counterfile_handle1=open('results.txt', mode='w')    #打开txt文件
print('作者:洛杉矶柠檬人')
print('分析程序开始!!!!!!!!!!!!!!!!')
print('--------------------------------------')
print("请输入图片路径,例如 test01.jpg 或者 C:\\Users\\Shuinane\\Pictures\\test01.jpg")
x = input("请输入图片路径:")pic_path = x    #图片路径time_start=time.time()    #计时开始
img = cv2.imread(pic_path)    #读取图片
b, g, r = cv2.split(img)    # 默认BGR转换为RGB
img2 = cv2.merge([r, g, b])print('图片高度:'+str(img2.shape[0])+'px')    #打印高度
print('图片宽度:'+str(img2.shape[1])+'px')    #打印宽度
print('正在分析中...')#读取图片rgb信息代码,生成一个每个点的rgb列表
c = []
for x in range(img2.shape[0]):for y in range(img2.shape[1]):c.append(str(img2[x, y][0])+','+str(img2[x, y][1])+','+str(img2[x, y][2]))
a = len(c)
print('图片大小:'+str(a)+'px')    #通过计算c列表的长度得到图片的大小 即 列表的长度 == 像素点的个数 == 图片的大小
print('色彩种类:'+str(len(list(Counter(c)))))    #通过计算counter(c)列表的长度得到图片的色彩数量 即 列表的长度 == 图片的色彩数量print("请输入展示色彩数量,将自动为您降次排列。 ")
y=input("请输入展示色彩数量:")
file_handle1.write(str(Counter(c).most_common(int(y)))) #修改数字 ,你即可获取对应色彩数量(递减排列),例如你输入 10 则返回排列前 10 的颜色信息 ,输入 a 则 返回所有出现过的颜色
file_handle1.write('!'+str(a)+'!')
time_end = time.time()
print('分析耗时:', time_end-time_start, 's')
print('分析程序结束!!!!!!!!!!!!!!!!!!')
print('开始浏览器端渲染,数据信息也可在 results.txt 内查看')
print('--------------------------------------')
file_handle1.close()
webbrowser.open("run.html")
print('回车键结束程序')
end=input('')
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>色彩比重图</title><script src="jquery.min.js"></script><style>* {margin: 0;padding: 0;box-sizing: content-box;}div {display: flex;flex-wrap: wrap;}span {position: relative;border: 1px dotted white;height: 120px;width: 120px;background-color: #bfbfbf;overflow: hidden;}a:nth-child(1) {text-align: center;line-height: 35px;position: absolute;top: 0;width: 120px;height: 35px;font-weight: bolder;}a:nth-child(2) {text-align: center;line-height: 35px;position: absolute;bottom: 0;width: 120px;height: 35px;display: none;}</style>
</head>
<body><input type="file" onchange="upload(this)"/><div></div>
</body><script>function upload(input) {  //支持chrome IE10$('input').hide();alert('频率 从左至右 由上到下 依次递减,数据量大的话,请耐心等待色块的生成!')if (window.FileReader) {var file = input.files[0];filename = file.name.split(".")[0];var reader = new FileReader();reader.onload = function() {var alldots = this.result.split('!')console.log(alldots[1])var matchReg = /'.*?\'/gi; //所有的像素点for (let i=0; i< this.result.substring(0, this.result.length - 1).slice(1).split('),').length; i++) {$("div").append('<span><a>1</a><a>2</a></span>');}$('span').mouseover(function () {$($(this)[0].children[1]).show();$($(this)[0].children[1]).html($(this).attr('bkc'));});$('span').mouseleave(function () { $($(this)[0].children[1]).hide();});for (let i=0; i< this.result.substring(0, this.result.length - 1).slice(1).split('),').length; i++) {$($("div")[0].children[i]).css('background-color', 'rgb('+this.result.substring(0, this.result.length - 1).slice(1).split('),')[i].match(matchReg)[0].substr(0, this.result.substring(0, this.result.length - 1).slice(1).split('),')[i].match(matchReg)[0].length-1).substring(1)+')').attr('bkc', this.result.substring(0, this.result.length - 1).slice(1).split('),')[i].match(matchReg)[0].substr(0, this.result.substring(0, this.result.length - 1).slice(1).split('),')[i].match(matchReg)[0].length-1).substring(1));m = this.result.split('!')[0].substr(1).substring(0,this.result.split('!')[0].substr(1).length-1).split(")")[i].split("',")[1]console.log(m)console.dir($('div')[0].children[i].children[0]);$($('div')[0].children[i].children[0]).html(Math.round(Number(m)/Number(alldots[1]) * 10000)/100.00+'%');if(Math.round(Number(m)/Number(alldots[1]) * 10000)/100.00+'%' == '0%'){$($('div')[0].children[i].children[0]).html('几乎为 0%');}}}reader.readAsText(file);}// //支持IE 7 8 9 10// else if (typeof window.ActiveXObject != 'undefined'){//     var xmlDoc;//     xmlDoc = new ActiveXObject("Microsoft.XMLDOM");//     xmlDoc.async = false;//     xmlDoc.load(input.value);//     alert(xmlDoc.xml);// }// //支持FF// else if (document.implementation && document.implementation.createDocument) {//     var xmlDoc;//     xmlDoc = document.implementation.createDocument("", "", null);//     xmlDoc.async = false;//     xmlDoc.load(input.value);//     alert(xmlDoc.xml);// } else {//     alert('error');// }}</script>
</html>

链接:
https://pan.baidu.com/s/1QARO1zxsptNjkJwNK336dg
提取码:1119
复制这段内容后打开百度网盘手机App,操作更方便哦
.

python+jQuery 实现图片颜色比重分析相关推荐

  1. OpenCV for Python之改变图片颜色

    OpenCV for Python之改变图片颜色 1.环境 2 直接修改通道值 3.与.或.非.异或操作 Opencv4 官方文档 : https://docs.opencv.org/4.2.0/ O ...

  2. Python批量更改图片颜色,可做证件照底色的更换

    红色部分图片更改为白色 originData:将需要转换的图片放置到这个文件夹中,可自定义文件夹名 resData:转换后结果保存的位置,可自定义文件夹名 def img_path(read_path ...

  3. python查看图片颜色统计_Python通过PIL获取图片主要颜色并和颜色库进行对比的方法...

    本文实例讲述了Python通过PIL获取图片主要颜色并和颜色库进行对比的方法.分享给大家供大家参考.具体分析如下: 这段代码主要用来从图片提取其主要颜色,类似Goolge和Baidu的图片搜索时可以指 ...

  4. python批量读取图片gps位置_某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!...

    原标题:某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置! 1. python读取图片exif属性中的GPS信息 智能手机或平板如果在拍照时开启定位服务,照片中就会记录拍照位置信息和 ...

  5. 怎么用ps提取图片颜色分析色彩搭配

    这个小工具(PS插件)还是挺好用的,无需网络,直接在PS软件上面即可使用,支持Win与MAC版PS CS6以上版本,再也不用为分析图片配色发愁了,这个PS脚本插件可以搜一下"图片颜色分析识别 ...

  6. 用python提取图片主要颜色_Python可视化|09-使用python和R提取图片颜色绘图(五-颜色使用完结篇)...

    本文是继前面四篇python可视化颜色使用的完结篇,介绍如何使用python提取图片中的颜色绘图: 如果你不想使用前人设定好的色号或者colormap,想自己从好看的图片中提取颜色,请往下看: 1.颜 ...

  7. python背景颜色代码大全_python3中布局背景颜色代码分析

    我们想要给某个模块着重突出,以便引起大家注意的时候,通常给那个模块的背景颜色换亮一点.这种情况的操作多见于我们想要突出表格中的某个数据,或是某一项的名称. 在python3中设置布局背景颜色需要通过代 ...

  8. Python新建纯色图片(任意颜色)

    这里用到的是cv2和numpy的组合.cv2会把图片都处理成uint8的numpy矩阵,同理,我们可以把符合图片通道要求的numpy uint8矩阵用cv2保存成图片. 直接看代码: import n ...

  9. 图片颜色反转算法|python

    算法优化 浮点运算转换为定点运算比较慢 移位运算比定点运算快 图片颜色反转 灰度图片颜色反转 # 灰度图片翻转 import cv2 import numpy as np img = cv2.imre ...

最新文章

  1. MySQL数据表命令
  2. 在ireport报错 报 jdk5找不到的解决办法
  3. 使用tomcat自带的连接池,报错
  4. 简单有效!在CV/NLP/DL领域中,有哪些修改一行代码或者几行代码提升性能的算法?...
  5. 计算机高层应用,计算机网络中高层应用.ppt
  6. 腾讯数据库RTOlt;30s,RPO=0高可用方案首次全景揭秘
  7. [转]图片格式WEBP全面解析
  8. bootstrap 滚动 进度条_bootstrap实现动态进度条效果
  9. esp8266舵机驱动_arduino开发ESP8266学习笔记四—–舵机
  10. java plsql_在PLSQL中编译复杂的java(转)
  11. ReportServer中,要配置远程可登录帐号
  12. ssh-copy-id非22端口的使用方法
  13. 联邦学习 OR 迁移学习?联邦迁移学习不香吗
  14. java 微信 图灵机器人_使用图灵api创建微信聊天机器人
  15. VirtualBox 教程
  16. python旋转校正原理_Python+OpenCV实现旋转文本校正方式
  17. 软件项目管理存在的问题及改进措施
  18. 数据结构分类及八种常见数据结构
  19. 一款网页游戏外挂开发-数据抓包2
  20. 今日芯声 | 四大运营商之一居然不支持华为?假的!

热门文章

  1. “蛰伏”三十年,基因疫苗技术正在进行最终测试阶段
  2. java分层开发模式的概念_Java开发人员的z / OS概念
  3. 华为留不住人才,任正非痛心
  4. BZOJ 1001 狼抓兔子(Dijkstra)
  5. bulter机器人_盘点:九款物流机器人
  6. AIFashion第二十八天——安装自定义开机动画
  7. 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 Epub +Azw3 +Mobi
  8. 1. 饶明新 校公开课六年级下册《数学广角-鸽巢问题》照片
  9. ExecutorService - 10个技巧和窍门
  10. 抖音小店无货源是不是在割韭菜?