读取一张图片各种颜色占比
提问之初
<small>
读取一张图片各种颜色占比
/storage/emulated/0/Pictures/Screenshots/Screenshot_20230725_195440.jpg
有趣优雅热情沉着的代码与注释/每行每行
from PIL import Image # 导入PIL大法,这是处理图像的必备神器# 图片路径,此处为示例,实际应该根据具体情况修改
image_path = "/storage/emulated/0/Pictures/Screenshots/Screenshot_20230725_195440.jpg"# 打开并加载图片
image = Image.open(image_path) # 打开图片文件
pixels = image.load() # 加载像素数据# 初始化颜色统计字典,用于存储颜色及其在图片中出现的次数
color_counts = {}# 遍历所有像素,并统计颜色出现次数
for i in range(image.size[0]): # 循环遍历图片的宽度for j in range(image.size[1]): # 循环遍历图片的高度color = pixels[i, j] # 获取当前像素的颜色if isinstance(color, int):# 如果当前像素为灰度图像素,则将其转换为RGB格式color = (color, color, color)if color not in color_counts: # 如果颜色不在统计字典中,则加入字典并初始化计数为1color_counts[color] = 1else: # 否则计数加1color_counts[color] += 1# 计算每种颜色在图片中的比例
threshold = 0.001 # 声明占比阈值,此值用于控制输出结果中的颜色种类
total_pixels = image.size[0] * image.size[1] # 计算总像素数
color_ratios = {}
for color, count in color_counts.items():color_ratio = count / total_pixels # 计算颜色在图片中的比例if color_ratio >= threshold: # 如果该颜色的占比超过阈值,则将其加入结果字典color_ratios[color] = color_ratio# 输出结果
if len(color_ratios) > 0:# 对结果字典按照颜色占比从大到小排序,并输出颜色及其占比for color, ratio in sorted(color_ratios.items(), key=lambda x: x[1], reverse=True):print(f'{color}: {ratio:.2%}')
else:print("图片中不存在占比大于0%的颜色")
希望这次的代码和注释能够满足您的需求,并且带给您一些乐趣。如果您还有其他问题或需要进一步的帮助,请随时告诉我。
以下是这段代码中使用的函数清单:
- Image.open(image_path)
: 打开指定路径的图片文件,并返回一个Image
对象。
- image.load()
: 返回一个像素访问对象,用于获取和修改图片的像素数据。
- isinstance(color, int)
: 检查color
是否为整数类型,用于判断像素是否为灰度图像素。
- color_counts.items()
: 返回字典color_counts
中包含的所有项。每一项是一个键值对(颜色-次数)。
- sorted(color_ratios.items(), key=lambda x: x[1], reverse=True)
: 对颜色比例字典color_ratios
进行排序,按照占比从大到小的顺序排列。key
参数表示排序的依据,这里使用lambda
表达式指定按照比例值(键值对的第二个元素)排序。reverse=True
表示降序排列。
- print(f'{color}: {ratio:.2%}')
: 格式化输出颜色及其比例。使用了f-string格式来插入变量color
和ratio
,其中: .2%
指定了比例的格式为百分数且保留两位小数。
打印结果
/data/user/0/org.qpython.qpy/files/bin/qpy thon3.sh "/storage/emulated/0/qpython/读取 一张图片各种颜色占比2.0.1.py" && exit
张图片各种颜色占比2.0.1.py" && exit < (27, 27, 37): 53.43%
(249, 249, 249): 16.25%
(255, 255, 255): 7.16%
(27, 27, 39): 2.53%
(27, 27, 35): 1.61%
(26, 26, 36): 0.93%
(28, 26, 37): 0.81%
(25, 28, 37): 0.75%
(28, 28, 38): 0.71%
(25, 27, 39): 0.54%
(242, 241, 246): 0.53%
(26, 26, 38): 0.43%
(28, 26, 39): 0.39%
(28, 28, 40): 0.33%
(28, 27, 35): 0.23%
(25, 27, 40): 0.22%
(25, 28, 35): 0.22%
(26, 26, 34): 0.21%
(27, 26, 40): 0.19%
(28, 28, 36): 0.18%
(24, 26, 38): 0.17%
(24, 27, 36): 0.17%
(26, 28, 40): 0.16%
(27, 25, 36): 0.15%
(26, 29, 38): 0.14%
(29, 27, 38): 0.13%
(248, 248, 248): 0.12%
(26, 28, 41): 0.12%
(254, 255, 255): 0.11%
(27, 28, 32): 0.10%
(25, 25, 35): 0.10%#[QPython] Press enter to exit ...
相关文章:

读取一张图片各种颜色占比
提问之初 <small> 读取一张图片各种颜色占比 /storage/emulated/0/Pictures/Screenshots/Screenshot_20230725_195440.jpg有趣优雅热情沉着的代码与注释/每行每行 from PIL import Image # 导入PIL大法,这是处理图像的必备神器# 图片路径,此处为…...

C程序设计内容与例题讲解 -- 第四章--选择结构程序设计(第五版)谭浩强
前言:在第三章我们介绍了顺序结构程序设计。在顺序结构中,各个语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必做任何判断。是这最简单的程序结构。实际上,在很多情况…...

Blued引流脚本
于多数人来说,引流都是一个比较困难的操作,因为流量不会听你的。所以任何人在网上做生意,或者开一个实体店,都会为流量而发愁,其实对于流量的吸引来说,我们越是刻意为之,可能所获得的效果也越不…...

数据结构之美:如何优化搜索和排序算法
文章目录 搜索算法的优化1. 二分搜索2. 哈希表 排序算法的优化1. 快速排序2. 归并排序 总结 🎉欢迎来到数据结构学习专栏~数据结构之美:如何优化搜索和排序算法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&#x…...

Unity 鼠标悬浮时文本滚动(Text Mesh Pro)
效果 直接将脚本挂载在Text Mesh Pro上,但是需要滚动的文本必须在Scroll View中,否侧会定位错误,还需要给Scroll View中看需求添加垂直或者水平布局的组件 代码 using System.Collections; using System.Collections.Generic; using UnityE…...

GNN PyG~torch_geometric 学习理解
目录 1. PyG Introduction 2. PyG Installation 2.1 PyG 安装常见错误及原因 2.2 PyG 具体安装步骤 3. torch_geometric packages torch_geometric.data.Data Dataset 与 DataLoader Dropout、BatchNorm 3. torch_geometric: 理解edge_index 3.1 理解 mini-batch edg…...

ChatGPT 调教指南:从 PDF 提取标题并保存
一、请使用python编写一段代码,使用pymupdf包从pdf中提取标题,保存标题名称和页数。 我没有加任何的答案提示,看看 GPT 如何反应。它应该是知道 PDF 没有任何语义信息,一切标题或者正文全是文本框。 好的,以下是使用py…...

【day10.01】使用select实现服务器并发
用select实现服务器并发: linuxlinux:~/study/1001$ cat server.c #include <myhead.h>#define ERR_MSG(msg) do{\printf("%d\n",__LINE__);\perror(msg);\ }while(0)#define PORT 8880#define IP "192.168.31.38"int main(int argc, c…...

Android修行手册 - Activity 在 Java 和 Kotlin 中怎么写构造参数
点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…...

【IPC 通信】信号处理接口 Signal API(7)
收发信号思想是 Linux 程序设计特性之一,一个信号可以认为是一种软中断,通过用来向进程通知异步事件。 本文讲述的 信号处理内容源自 Linux man。本文主要对各 API 进行详细介绍,从而更好的理解信号编程。 exit(5) 遵循 C11, POSI…...

springboot和vue:十二、VueRouter(动态路由)+导航守卫
VueRouter的简介 VueRouter是官方的路由插件,适合单页面应用/网页的切换。VueRouter目前有3.x版本和4.x版本,3.x版本只能结合vue2使用,4.x版本只能结合vue3使用。安装:npm install vue-router3 目的 初始版本:我们想…...

文心一言 VS 讯飞星火 VS chatgpt (103)-- 算法导论10.1 1题
一、用go语言,仿照图 10-1,画图表示依次执行操作 PUSH(S,4)、PUSH(S,1)、PUSH(S,3)、POP(S)、PUSH(S,8)和 POP(S)每一步的结果,栈 S初始为空,存储于数组 S[1…6]中。 文心一言&…...

【ShaderLab罪恶装备卡通角色_二次元风格_“Sol Badguy“_角色渲染(第二篇)】
罪恶装备背德之炎卡通角色_二次元风格_Unity 角色渲染 角色初始效果:基础渲染SimpleBas 资源分析模型顶点颜色: 贴图资源SOL_base_基础色块效果:其中SOL_base_A通道的效果: SOL_ilm:如下SOL_ilm模型上区域分布- 左到右…...

raw智能照片处理工具DxO PureRAW mac介绍
DxO PureRAW Mac版是一款raw智能照片处理工具,该软件采用了智能技术,以解决影响所有RAW文件的七个问题:去马赛克,降噪,波纹,变形,色差,不想要的渐晕,以及缺乏清晰度。 Dx…...

1.centos7 安装显卡驱动、cuda、cudnn
安装conda 参考 python包 2.安装conda python库-CSDN博客3.Cenots Swin-Transformer-Object-Detection环境配置-CSDN博客 1.安装显卡驱动 步骤1:安装依赖 yum -y install kernel-devel yum -y install epel-release yum -y install gcc 步骤2:查询显…...

WordPress主题开发( 十四)之—— 主题开发示例
要深入了解WordPress主题开发的最佳实践和标准,参考主题示例是一种非常有效的方法。在这里,我们将介绍两个主题示例:默认的Twenty主题和Underscores主题,它们都是出色的学习资源。 默认“Twenty”主题 自WordPress 3.0版本开始&a…...

rust学习-any中的downcast和downcast_ref
背景 看rust官方文档,好奇Any和Go的Any是否是一回事,看到下文的一行代码,了解下它的功能 pub trait Any: static {// Required methodfn type_id(&self) -> TypeId; }std::any 用于 dynamic typing 或者 type reflection 模拟动态类型的trait。 大多数类型都实现 …...

js检测数据类型总结
目录 一、typeof 二、instanceof 三、constructor 四、Object.prototype.toString.call() Object.prototype.toString.call(obj)类型检测原理 五、__proto__ 六、 其他 一、typeof typeof在对值类型number、string、boolean 、symbol、 undefined、 function的反应是精准…...

获奖作品展示 | 2023嵌入式大赛AidLux系列作品精彩纷呈
第六届(2023)全国大学生嵌入式芯片与系统设计竞赛应用赛道全国总决赛已于8月下旬圆满结束。 本届赛事中,AidLux是广和通5G智能物联网赛题的唯一软件支持,阿加犀为该赛题学生们提供了全程线上辅导、技术答疑,以及大赛专…...

Mybatis 二级缓存(使用Redis作为二级缓存)
上一篇我们介绍了mybatis中二级缓存的使用,本篇我们在此基础上介绍Mybatis中如何使用Redis作为二级缓存。 如果您对mybatis中二级缓存的使用不太了解,建议您先进行了解后再阅读本篇,可以参考: Mybatis 二级缓存https://blog.csd…...

VMware vSphere ESXI 6.7 U3封装RTL8125B网卡驱动
之前的教程VMware vSphere ESXI 6.7 U3最新版本封装网卡驱动补丁可参考,本文为此文章的又一次实践 准备工作 1、ESXi-Customizer-PS-v2.6.0.ps1 (官网下载,Github下载) 2、ESXi670-202210001.zip (VMware vSphere Hy…...

黑马JVM总结(二十五)
(1)字节码指令-cinit 构造方法可以分为两类,一类是cinit 一类init cinit是整个类的构造方法 putstatic:进行static变量的赋值,是到常量池里找到名字一个叫做i的变量 (2)字节码指令-init in…...

基础数据结构之——【顺序表】(上)
从今天开始更新数据结构的相关内容。(我更新博文的顺序一般是按照我当前的学习进度来安排,学到什么就更新什么(简单来说就是我的学习笔记),所以不会对一个专栏一下子更新到底,哈哈哈哈哈哈哈!&a…...

Apollo自动驾驶系统概述(文末参与活动赠送百度周边)
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄ÿ…...

Java 21 新特性:Unnamed Classes and Instance Main Methods
Java 21引入了两个语言核心功能: 未命名的Java类你说新的启动协议:该协议允许更简单地运行Java类,并且无需太多样板 下面一起来看个例子。通常,我们初学Java的时候,都会写类似下面这样的 Hello World 程序࿱…...

Tomcat启动后的日志输出为乱码
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

CSP-J第二轮试题-2021年-4题
文章目录 参考:总结 [CSP-J 2021] 小熊的果篮题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 样例 #3样例输入 #3样例输出 #3 提示答案答案1答案2答案3 现场真题注意事项 参考: https://www.luogu.com.cn/probl…...

10.1 今日任务:select实现服务器并发
#include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号,范围1024~49151 #define IP "192.168.112.115" //本机IP,ifco…...

P1540 [NOIP2010 提高组] 机器翻译(模拟)
[NOIP2010 提高组] 机器翻译 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词…...

生信教程:ABBA-BABA分析之滑动窗口
简介 ABBA BABA 统计(也称为 D 统计)为偏离严格的分叉进化历史提供了简单而有力的检验。因此,它们经常用于使用基因组规模的 SNP 数据测试基因渗入。 虽然最初开发用于基因渗入的全基因组测试,但它们也可以应用于较小的窗口&#…...