import cv2
import numpy as np
import math
img_path="C:/Users/xpp/Desktop/Lena.png"
img=cv2.imread(img_path)
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])
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, img1, img2
beta=cv2.getTrackbarPos('Beta','image')
img1=np.uint8(np.clip((alpha*img2+beta),0,255))
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("亮度正常")
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)
while (True):
cv2.imshow('image',img)
if cv2.waitKey(1)==ord('q'):
break
cv2.destroyAllWindows()
亮度正常
算法:图像明暗调整是检测画面亮度和调节画面亮度与对比度。数字图像 f(x,y) = i(x,y) r(x,y) ,如果灰度值在[0,255]之间,则f值越接近0,亮度越低,f值越接近255,亮度越高。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!