要求
存在一个文件夹内有若干张图像,需要计算每张图片的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值,