当前位置: 首页 > 编程笔记 >

Python实现计算图像RGB均值方式

太叔弘壮
2023-03-14
本文向大家介绍Python实现计算图像RGB均值方式,包括了Python实现计算图像RGB均值方式的使用技巧和注意事项,需要的朋友参考一下

要求

存在一个文件夹内有若干张图像,需要计算每张图片的RGB均值,并计算全部图像的RGB均值。

代码

# -*- coding: utf-8 -*-
"""
Created on Thu Nov 1 10:43:29 2018
@author: Administrator
"""
import os
import cv2
import numpy as np
 
path = 'C:/Users/Administrator/Desktop/rgb'
def compute(path):
  file_names = os.listdir(path)
  per_image_Rmean = []
  per_image_Gmean = []
  per_image_Bmean = []
  for file_name in file_names:
    img = cv2.imread(os.path.join(path, file_name), 1)
    per_image_Bmean.append(np.mean(img[:,:,0]))
    per_image_Gmean.append(np.mean(img[:,:,1]))
    per_image_Rmean.append(np.mean(img[:,:,2]))
  R_mean = np.mean(per_image_Rmean)
  G_mean = np.mean(per_image_Gmean)
  B_mean = np.mean(per_image_Bmean)
  return R_mean, G_mean, B_mean
 
if __name__ == '__main__':
  R, G, B= compute(path)
  print(R, G ,B)

这里需要注意cv2.imread()读取顺序为BGR问题。

注意

路径不能出现中文,不然容易出错。

错误如下:

TypeError: 'NoneType' object is not subscriptable

结果

补充知识:Image得到图片像素的RGB

我就废话不多说了,大家还是直接看代码吧!

from PIL import Image
image = Image.open('./3.png')
print(image)#查看mode是否等于RGB,
image_rgb = image.convert("RGB")
image_rgb.getcolors()  

打印结果

<PIL.PngImagePlugin.PngImageFile image mode=P size=500x332 at 0x7F53383FADA0>

[(10990, (192, 0, 128)),#10990表示像素总数,(192, 0, 128)表示RGB值
 (7589, (224, 224, 192)),
 (5706, (192, 128, 128)),
 (3913, (0, 64, 0)),
 (137802, (0, 0, 0))]

以上这篇Python实现计算图像RGB均值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 我目前正在编码一个colorpicker并尝试创建一个函数,它需要3个介于0和255(RGB)之间的整数。 如果你看上面链接的图像,你可以看到在中心有一个彩虹-渐变。上面的所有RGB值至少包含一个0和一个255的整数。另一个可以是0到255之间的任何值。然后在图像的左边有一个正方形,它包含这个“彩虹颜色”的所有“子颜色”的渐变。 函数应该取这个子颜色的RGB值(例如,R=112,G=158,B=7

  • 对于图像处理的练习,我必须编写一个程序,将各种效果应用于图像。其中一个效果是灰度,这是找到RGB值的平均值((红绿蓝)/3)。然而,要极化图像,我需要首先找到每个单独分量的平均值(即所有红色值/红色像素数)。然后循环遍历行和列(使用像素、红色值、绿色值和蓝色值的计数器)作为找到平均值的方法合适吗?有更有效的方法吗? 此外,像素基于平均像素值进行极化。“如果平均R是100,平均G是200,平均B是3

  • 在Python中,如何计算直方图的峰值? 我试过这个: 但结果是: 我希望它能找到0号和3号垃圾桶的峰值。 请注意,峰值跨越超过1个斌。我不希望它将跨度超过1列的峰视为额外的峰。 我对另一种获得高峰的方法持开放态度。 注:

  • 我正在尝试用python创建热图。为此,我必须为可能值范围内的每个值指定一个RGB值。我想把颜色从蓝色(最小值)改为绿色(最大值)。 下面的图片示例解释了我对颜色组成的看法:我们有一个范围,从1(纯蓝色)到3(纯红色),2介于两者之间,类似于绿色。 我阅读了关于线性插值的内容,并编写了一个函数(或多或少)来处理在最小值和最大值之间的某个值的计算,并返回一个RGB元组。它使用和conditions(

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 本文向大家介绍opencv+python实现鼠标点击图像,输出该点的RGB和HSV值,包括了opencv+python实现鼠标点击图像,输出该点的RGB和HSV值的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧! 补充知识:python opencv查看图片中任一点的像素 BGR值 灰度值 HSV值 如下所示: Windows下有画图软件可以直接查看图片的RGB值,