RGB 平均值统计

任务:有一一对应的图片多组如下,希望统计灰色部分原有grb平均值,彩色部分rgb平均值。

方法:由下图对各个像素分析,分为3类,并记录坐标,根据坐标统计上图的rgb平均值,结果放在一张Excel中。

import os
import time
from PIL import Image
import openpyxldef process_images(folder1, folder2, output_excel):start_time = time.time()  # # 创建一个新的Excel工作簿wb = openpyxl.Workbook()ws = wb.activews.title = "Image Analysis"ws.append(["Image Name", "Category", "Average R", "Average G", "Average B"])# 获取文件夹中的所有文件名files1 = [f for f in os.listdir(folder1) if f.endswith('.jpg')]files2 = [f for f in os.listdir(folder2) if f.endswith('.jpg.jpg')]# 确保文件名对应for file1 in files1:file2 = file1 + ".jpg"if file2 in files2:img1_path = os.path.join(folder1, file1)img2_path = os.path.join(folder2, file2)img1 = Image.open(img1_path)img2 = Image.open(img2_path)if img1.size != img2.size:print(f"Skipping {file1} and {file2} due to size mismatch.")continuepixels1 = img1.load()pixels2 = img2.load()categories = {'black': {'count': 0, 'total_r': 0, 'total_g': 0, 'total_b': 0},'gray': {'count': 0, 'total_r': 0, 'total_g': 0, 'total_b': 0},'other': {'count': 0, 'total_r': 0, 'total_g': 0, 'total_b': 0}}for y in range(img1.height):for x in range(img1.width):r2, g2, b2 = pixels2[x, y]if (r2, g2, b2) == (0, 0, 0):category = 'black'elif (r2, g2, b2) == (169, 169, 169):category = 'gray'else:category = 'other'r1, g1, b1 = pixels1[x, y]categories[category]['count'] += 1categories[category]['total_r'] += r1categories[category]['total_g'] += g1categories[category]['total_b'] += b1for category, data in categories.items():if data['count'] > 0:avg_r = data['total_r'] / data['count']avg_g = data['total_g'] / data['count']avg_b = data['total_b'] / data['count']ws.append([file1, category, avg_r, avg_g, avg_b])else:ws.append([file1, category, 0, 0, 0])wb.save(output_excel)end_time = time.time()  # 结束计时elapsed_time = end_time - start_timeprint(f"Elapsed time: {elapsed_time:.2f} seconds")# 使用示例
folder1 = '/folder1'  # 文件夹路径
folder2 = '/folder2'  # 
output_excel = 'output.xlsx'
process_images(folder1, folder2, output_excel)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux完整版命令大全(十八)

quotacheck 功能说明:检查磁盘的使用空间与限制。语  法:quotacheck [-adgRuv][文件系统...]补充说明:执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件&#…

linux开发之设备树基本语法二

设备树特殊节点,对节点定义别名,chosen节点用来uboot给内核传参 上面的mmc0就是sdmmc0节点的别名 device_type属性 只对cpu节点和memory节点进行描述 自定义属性 这部分自定义,比如定义管脚标号,初始数值等 为什么我们可以在设备树上自己定义属性呢?设备树文件描述的是硬…

JD3-40/23漏电继电器 AC220V 50-500mA 0.1s 导轨安装

系列型号: JD3-40/13漏电继电器JD3-40/23漏电继电器JD3-40/33漏电继电器JD3-40/43漏电继电器 JD3-70/13漏电继电器JD3-70/23漏电继电器JD3-70/33漏电继电器JD3-70/43漏电继电器 JD3-100/23漏电继电器JD3-100/43漏电继电器JD3-100/33漏电继电器JD3-100/13漏电继电…

轻松入门Linux命令行(一)

1. 打开终端 在Linux系统中,我们可以通过终端(Terminal)来执行各种命令。不同的Linux发行版可能有不同的终端程序,但通常都可以在应用程序菜单中找到。打开终端后,我们就可以看到一个命令行提示符,等待我们…

260 基于matlab的工业乙醇发酵GUI仿真

基于matlab的工业乙醇发酵GUI仿真。首先对经典的流加半经验半理论模型进行动态和稳态仿真,考虑实际情况密,逐步将温度,气体排放等因素考虑到模型中去,进行综合性仿真。结合GUI技术,以动力学模型为核心,制作…

国产高边驱动对标英飞凌BTS7020-2

车规级高边驱动系列产品可P2P替换BTS7020-2的高边驱动芯片。类比半导体高边驱动产品可用于驱动车身控制域中的各种阻性、感性及容性负载的驱动,其在车内外的应用非常广泛,包括车内饰灯、头尾灯、座椅和方向盘及后视镜加热、电磁阀、门锁、电机等场景。 …

svg画简单的立方体

开发背景 要开发一个拖拽的大屏项目,其中涉及到一个装饰组件,是一个立方体cube,要求颜色可以修改,大小可以拖拽改变。 效果如下 分析 经过我一番奇思妙想,决定用svg实现,因为对svg比较熟悉。那就先来在草…

python前端通过API接口调用与后端进行数据交互前端如何调用api接口获取电商平台商品实时评论信息数据

要在Python前端通过API接口调用与后端进行数据交互并获取商品实时评论信息数据,可以通过封装好的api接口通过链接直接请求获取商品数据,以下是接入api的请求示例: # coding:utf-8 """ Compatible for python2.x and python3.…

柯桥成人职场英语/Excuse me 是 “不好意思”,那 Excuse you呢?

口语中,excuse me的使用频率非常高 甚至已经成为大家的口头禅 用在一些表示歉意或者打扰对方的场合 本来excuse me的用法就已经够丰富了 没想到竟然还有excuse you? 哈哈哈,别蒙圈 这篇就给大家捋捋excuse的那些表达 快和小编一起来学学…

【博客20】缤果Matlab串口调试助手V1.0(中级篇)

超级好用的Matlab串口调试助手 开发工具: MATLAB 2024a中文版 (编程语言matlab) 目录 前言 一、软件概要: 二、软件界面: 1.App演示 ​ ​---- ◇♣♡♠ ---- 2.其他扩展App展示 ​编辑 三、获取 >> 源码以及Git记录: 总结 前…

海外仓系统要多少钱?最贵的未必是最好的,性价比高的才是

海外仓系统可以说已经是现在海外仓管理不可或缺的重要工具,然而,很多海外仓企业在选择海外仓系统时最头疼的问题就是不知道到底多少钱才合适。 确实,现在的海外仓系统市场价格体系非常多,几万几十万各种定价都有,让人…

期刊issn清洗方法

文章目录 一、前言二、实现方法一、前言 该代码用于统一期刊不规范的issn格式,并筛选出错误的issn 二、实现方法 import numpy as npclass CleanJournal():@classmethoddef isNaNo(cls, sth):

【深度学习】contorlnet Pixel Perfect

https://andyhtu.com/understanding-controlnets-pixel-perfect-in-stable-diffusion/ 稳定扩散与AI工作流程优化:深入探索ControlNet的像素完美功能 正如一位经验丰富的裁缝通过精确测量确保衣物贴身合体,ControlNet中的“像素完美”功能确保您的图像…

高性能mysql-查询性能优化

优化的核心 一个任务是由很多子任务组成的,每个子任务都会消耗一定时间,如果优化查询,要么消去一些子任务,要么让子任务更快。 慢查询的基础:优化数据访问 减少访问的行数。 在mysql服务器层是否在分析大量不必要的…

第13章 层次式架构设计理论与实践

层次式架构的核心思想是将系统组成为一种层次结构,每一层为上层服务,并作为下层客户。其实不管是分层还是其他的架构都是为了解耦,更好的复用,只要秉承着这种思想去理解一切都迎刃而解了。 13.1 层次上体系结构概述 回顾一下软件…

什么是Linux?Linux与windows的区别

说到电脑系统 我想有大多数人会脱口而出:windows、mac 是的,这也是如今市场上主流的两种操作系统。 但是对于IT相关的人士来说,还有一种系统也是必须有姓名 那就是Linux 今天我们就来为一些行业新手或是小白来科普一下,什么是…

【uniapp】uniapp页面介绍

目录 开发工具:HBuilderX介绍特点和功能 页面简介页面管理新建页面删除页面页面改名pages.json 设置应用首页 页面内容构成template模板区script 脚本区export default 外的代码export default 里的代码 style样式区 页面生命周期Vue2 页面及组件生命周期流程图Vue3…

重生奇迹MU剑士两把单手剑

重生奇迹mu觉醒剑士在武器的选择上非常广泛,可以单手操作也可以双手,那么许多玩家觉得单手剑特别帅气,能否装备两个单手剑,感兴趣的玩家一起来看看详情介绍。 单手剑是一个单手武器,你可以选择装备一个单手剑&#xf…

力扣283题:移动零(快慢指针)

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: [0…

13.Redis之数据库管理redis客户端JAVA客户端

1.数据库管理 mysql 中有一个重要的概念,database 1个 mysql 服务器上可以有很多个 database1个 database 上可以有很多个 表mysql 上可以随心所欲的 创建/删除 数据库~~ Redis 提供了⼏个⾯向 Redis 数据库的操作,分别是 dbsize、select、flushdb、flushall 命令…