opencv实现图片的亮度检测--python环境
来源:网络收集 点击: 时间:2024-03-06根据百度百科官网介绍所谓亮度就是(总得来点高大上的):
亮度是指发光体(反光体)表面发光(反光)强弱的物理量。
亮度也称明度,表示色彩的明暗程度。
而在python程序里
我们可以使用多种方法进行亮度评价检测。
比如: python提供了厉害的PIL库 借助于PIL我们方便的可以统计亮度信息
并得到结果!

还是老图老味道
import cv2 as cv
import numpy as np
import copy
import random
import math
from PIL import Image
from PIL import ImageStat #就靠他了
img = cv.imread(c:\\meiping1.png)
cv.imshow(img, img)

把图转成灰度然后使用ImageStat.Stat(im) 进行计算 返回平均值
def brightness1( im_file ): im = Image.open(im_file).convert(L) stat = ImageStat.Stat(im) return stat.mean
print(brightness1(c:\\meiping1.png))

RMS方法 把图转成灰度然后使用ImageStat.Stat(im)
def brightness2( im_file ): im = Image.open(im_file).convert(L) stat = ImageStat.Stat(im) return stat.rms
print(brightness2(c:\\meiping1.png))

采用经验公式 像素的方式处理计算
def brightness3( im_file ): im = Image.open(im_file) stat = ImageStat.Stat(im) r,g,b = stat.mean return math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2))
print(brightness3(c:\\meiping1.png))

结合像素 RGB公式 RMS的方法进行计算
def brightness4( im_file ):
im = Image.open(im_file)
stat = ImageStat.Stat(im)
r,g,b = stat.rms
return math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2))

小结:
根据几种方法得出
148.03313569266876
154.516620719862
148.78732874377505
156.51971831901835
基本接近 作为一种粗略的统计方法还是有参考价值!
注意事项要引入PIL库才能使用
几种评价方法结果并不相同,作为参考数据还是够用的
PYTHON亮度评价平均亮度PILOPENCV版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_264772.html