机器学习第3章第5节 : 调整图像亮度

来源:互联网 发布:touch bar 知乎 编辑:程序博客网 时间:2024/05/22 21:07

机器学习第3章第5节 : 调整图像亮度


注意事项 : 参见这里


原理

将像素值减小,那么亮度就会减小,全部色彩变暗;
将像素值加大,那么亮度就会增加,全部色彩变亮;


思路

获取图像大小 : 通过图像矩阵的shape属性获取图像的大小,shape返回tuple元组,元组的第一个元素为高度,第二个元素为宽度,点三个元素为像素值 [B,G,R] .

更改元素的像素值


代码

#!/user/bin/env python# -*- coding: utf-8 -*-"""Adjust brightness调整图像亮度"""import cv2fn = 'img/test1.jpg'if __name__ == '__main__':    print('loading %s ...' %fn)    print(u'处理中....')    status = 'dark'    if status == 'light':        value = 1.2    elif status == 'dark' :        value = 0.2    else:        value = 1    img = cv2.imread(fn)    #第二维度长度    w = img.shape[1]    #第一维度长度    h = img.shape[0]    ii = 0    #将全部色彩变暗    for xi in range(0,w):        for xj in range(0,h):            #将像素值整体改变            img[xj,xi,0] = int(img[xj,xi,0] * value)            img[xj,xi,1] = int(img[xj,xi,1] * value)            img[xj,xi,2] = int(img[xj,xi,2] * value)        #显示进度条        if xi % 10 == 0:            print('当前状态:',status,'当前进度:' , round(xi * 100 / w) ,'%')    cv2.namedWindow('img')    cv2.imshow('img' + status,img)    cv2.waitKey()    cv2.destroyAllWindows()

运行结果

原图

test1

图像变暗

dark

图像变亮

light


笔记

cv2.imread() 这个代码是cv2内置的图像的读取函数.

round(floatNum)返回浮点数floatNum的四舍五入值,使用的原因是xi * 100 / w会造成小数的产生,打印出来很难看.

原创粉丝点击