相关文章推荐
绅士的炒饭  ·  青花鱼养殖交流论坛刘育 - 抖音·  7 月前    · 
腹黑的自行车  ·  好玩的精灵游戏有哪些2024 ...·  1 年前    · 
强健的硬币  ·  知青老婆来了小说 - 抖音·  2 年前    · 
想出家的煎鸡蛋  ·  比亚迪 钠电池正式商用的消息又来了,虽然说的 ...·  2 年前    · 
安静的苦瓜  ·  【SA1488】苏苏姐家_钩针昭和复古风玩偶 ...·  2 年前    · 
Code  ›  Python 图片亮度检测和调节开发者社区
python 对比度
https://cloud.tencent.com/developer/article/2058056
严肃的橡皮擦
2 年前
作者头像
用户9925864
0 篇文章

Python 图片亮度检测和调节

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 算法工程师的学习日志 > Python 图片亮度检测和调节

Python 图片亮度检测和调节

作者头像
用户9925864
发布 于 2022-07-27 08:26:10
1.8K 0
发布 于 2022-07-27 08:26:10
举报

项目上遇到一个问题,图片上的物体识别度较差,尤其是在晚上的图片,画面模糊不清晰,则需要对太暗的图片需要单独提高画面亮度。解法分2步:先检测画面亮度,然后调节画面亮度与对比度。


1、基于传统方式的图像质量检测

方式:通过计算灰度图上的均值和方差,亮度异常时,均值会偏离均值点(可以假设为128),方差也会偏小;

# 把图片转换为单通道的灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 获取形状以及长宽
img_shape = gray_img.shape
 height, width = img_shape[0], img_shape[1]
size = gray_img.size
# 灰度图的直方图
hist = cv2.calcHist([gray_img], [0], None, [256], [0, 256])
# 计算灰度图像素点偏离均值(128)程序
a = 0
ma = 0
reduce_matrix = np.full((height, width), 128)
shift_value = gray_img - reduce_matrix
shift_sum = sum(map(sum, shift_value))
da = shift_sum / size
# 计算偏离128的平均偏差
 for i in range(256):
     ma += (abs(i-128-da) * hist[i])
m = abs(ma / size)
# 亮度系数
k = abs(da) / m
# print(k)
if k[0] > 1:
    if da > 0:
        print("过亮")
    else:
        print("过暗")
else:
    print("亮度正常")

2、对比度和亮度调节

亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度。 创建两个滑动条分别调整对比度和亮度(对比度范围:0 ~ 0.3, 亮度0 ~ 100)。提示:因为滑动条没有小数,所以可以设置为0 ~ 300,然后乘以0.01

import cv2
import numpy as np
alpha = 0.3
beta = 80
img_path = "1.jpg"
img = cv2.imread(img_path)
img2 = cv2.imread(img_path)
def updateAlpha(x):
    global alpha, img, img2
    alpha = cv2.getTrackbarPos('Alpha', 'image')
    alpha = alpha * 0.01
    img = np.uint8(np.clip((alpha * img2 + beta), 0, 255))
def updateBeta(x):
    global beta, img, img2
    beta = cv2.getTrackbarPos('Beta', 'image')
    img = np.uint8(np.clip((alpha * img2 + beta), 0, 255))
# 创建窗口
cv2.namedWindow('image')
cv2.createTrackbar('Alpha', 'image', 0, 300, updateAlpha)
cv2.createTrackbar('Beta', 'image', 0, 255, updateBeta)
cv2.setTrackbarPos('Alpha', 'image', 100)
cv2.setTrackbarPos('Beta', 'image', 10)
 
推荐文章
绅士的炒饭  ·  青花鱼养殖交流论坛刘育 - 抖音
7 月前
腹黑的自行车  ·  好玩的精灵游戏有哪些2024 最受欢迎的精灵手游大全前十_豌豆荚
1 年前
强健的硬币  ·  知青老婆来了小说 - 抖音
2 年前
想出家的煎鸡蛋  ·  比亚迪 钠电池正式商用的消息又来了,虽然说的是在叉车上的应用,但显然这不是空穴来风,联想到前几天的消息,淮海控股集团与比... - 雪球
2 年前
安静的苦瓜  ·  【SA1488】苏苏姐家_钩针昭和复古风玩偶编织视频教程_哔哩哔哩_bilibili
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号