Python实现计算图像RGB均值,怎么只读一张图片?

网上用python实现计算图像RGB均值都是批量的,而我只想得到一张图片的rgb均值(即整张图片三个通道的三个均值)如下的代码是一位大神的代码,对于刚学python的小白不会修改,求大神帮助。总之就是将下面代码从批量变为只分析一张图片的。问题应该简单,原谅我的无知。这是源码地址:https://blog.csdn.net/yql_617540298/article/details/83617512

-*- 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)

li450813298
燢皌 path = '16.png' def compute(path): image_Rmean = [] image_Gmean = [] image_Bmean = [] img = cv2.imread(path, 1) image_Bmean.append(np.mean(img[:,:,0])) image_Gmean.append(np.mean(img[:,:,1])) image_Rmean.append(np.mean(img[:,:,2])) R_mean = np.mean(image_Rmean) G_mean = np.mean(image_Gmean) B_mean = np.mean(image_Bmean) return R_mean, G_mean, B_mean if __name__ == '__main__': R, G, B= compute(path) Y = 0.299*R+0.587*G+0.114*B print("目标图片亮度为"+str(round(Y,2)))
8 个月之前 回复

2个回答

path = '16.png'
def compute(path):

image_Rmean = []
image_Gmean = []
image_Bmean = []
img = cv2.imread(path, 1)
image_Bmean.append(np.mean(img[:,:,0]))
image_Gmean.append(np.mean(img[:,:,1]))
image_Rmean.append(np.mean(img[:,:,2]))
R_mean = np.mean(image_Rmean)
G_mean = np.mean(image_Gmean)
B_mean = np.mean(image_Bmean)
return R_mean, G_mean, B_mean

if name == '__main__':
R, G, B= compute(path)
Y = 0.299*R+0.587*G+0.114*B
print("目标图片亮度为"+str(round(Y,2)))

import os
import cv2
import numpy as np

path = 'C:/Users/Administrator/Desktop/rgb/file.jpg'
def compute(path):
    file_names = os.listdir(path)
#   per_image_Rmean = []
#   per_image_Gmean = []
#   per_image_Bmean = []
    image_mean = []

#   for file_name in file_names:

    img = cv2.imread(os.path.join(path, file_name), 1)
    image_mean.append(np.mean(img[:,:,0]))
    image_mean.append(np.mean(img[:,:,1]))
    image_mean.append(np.mean(img[:,:,2]))

    image_mean = np.mean(image_mean)
#   R_mean = np.mean(per_image_Rmean)
#   G_mean = np.mean(per_image_Gmean)
#   B_mean = np.mean(per_image_Bmean)

    return image_mean

if __name__ == '__main__':
    imageMean = compute(path)
    print(imageMean)
JonathanYan
JonathanYan 回复燢皌: 我都没注意,你原程序就没写对,是__name__。是均值
8 个月之前 回复
li450813298
燢皌 并且出来的值是rgb的三个均值吗
8 个月之前 回复
li450813298
燢皌 大佬这个file_name会出错呀。 这是错误提示 if name == '__main__': NameError: name 'name' is not defined
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问