当前位置: 首页 > news >正文

读取一张图片各种颜色占比

提问之初

<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格式来插入变量colorratio,其中: .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大法&#xff0c;这是处理图像的必备神器# 图片路径&#xff0c;此处为…...

C程序设计内容与例题讲解 -- 第四章--选择结构程序设计(第五版)谭浩强

前言&#xff1a;在第三章我们介绍了顺序结构程序设计。在顺序结构中&#xff0c;各个语句是按自上而下的顺序执行的&#xff0c;执行完上一个语句就自动执行下一个语句&#xff0c;是无条件的&#xff0c;不必做任何判断。是这最简单的程序结构。实际上&#xff0c;在很多情况…...

Blued引流脚本

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

数据结构之美:如何优化搜索和排序算法

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

Unity 鼠标悬浮时文本滚动(Text Mesh Pro)

效果 直接将脚本挂载在Text Mesh Pro上&#xff0c;但是需要滚动的文本必须在Scroll View中&#xff0c;否侧会定位错误&#xff0c;还需要给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编写一段代码&#xff0c;使用pymupdf包从pdf中提取标题&#xff0c;保存标题名称和页数。 我没有加任何的答案提示&#xff0c;看看 GPT 如何反应。它应该是知道 PDF 没有任何语义信息&#xff0c;一切标题或者正文全是文本框。 好的&#xff0c;以下是使用py…...

【day10.01】使用select实现服务器并发

用select实现服务器并发&#xff1a; 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编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…...

【IPC 通信】信号处理接口 Signal API(7)

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

springboot和vue:十二、VueRouter(动态路由)+导航守卫

VueRouter的简介 VueRouter是官方的路由插件&#xff0c;适合单页面应用/网页的切换。VueRouter目前有3.x版本和4.x版本&#xff0c;3.x版本只能结合vue2使用&#xff0c;4.x版本只能结合vue3使用。安装&#xff1a;npm install vue-router3 目的 初始版本&#xff1a;我们想…...

文心一言 VS 讯飞星火 VS chatgpt (103)-- 算法导论10.1 1题

一、用go语言&#xff0c;仿照图 10-1&#xff0c;画图表示依次执行操作 PUSH(S&#xff0c;4)、PUSH(S&#xff0c;1)、PUSH(S&#xff0c;3)、POP(S)、PUSH(S&#xff0c;8)和 POP(S)每一步的结果&#xff0c;栈 S初始为空&#xff0c;存储于数组 S[1…6]中。 文心一言&…...

【ShaderLab罪恶装备卡通角色_二次元风格_“Sol Badguy“_角色渲染(第二篇)】

罪恶装备背德之炎卡通角色_二次元风格_Unity 角色渲染 角色初始效果&#xff1a;基础渲染SimpleBas 资源分析模型顶点颜色&#xff1a; 贴图资源SOL_base_基础色块效果&#xff1a;其中SOL_base_A通道的效果&#xff1a; SOL_ilm&#xff1a;如下SOL_ilm模型上区域分布- 左到右…...

raw智能照片处理工具DxO PureRAW mac介绍

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

1.centos7 安装显卡驱动、cuda、cudnn

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

WordPress主题开发( 十四)之—— 主题开发示例

要深入了解WordPress主题开发的最佳实践和标准&#xff0c;参考主题示例是一种非常有效的方法。在这里&#xff0c;我们将介绍两个主题示例&#xff1a;默认的Twenty主题和Underscores主题&#xff0c;它们都是出色的学习资源。 默认“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系列作品精彩纷呈

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

Mybatis 二级缓存(使用Redis作为二级缓存)

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

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...