相关文章推荐
气宇轩昂的蜡烛  ·  git gc - 知乎·  1 年前    · 
contrast_factor: 对比度因子:调整对比度的因子区间,应该在0-3之间 brightness_delta: 亮度增量:添加到像素的量在-1和1之间的间隔 hue_delta:色度增量:为添加到色调通道的量在-1和1之间的间隔 saturation_factor:饱和系数:因子乘以每个像素的饱和值的区间 def __init__ ( self , contrast_factor , brightness_delta , hue_delta , saturation_factor self . contrast_factor = contrast_factor self . brightness_delta = brightness_delta self . hue_delta = hue_delta self . saturation_factor = saturation_factor def __call__ ( self , image ) : 将视觉效果应用到图片上 if self . contrast_factor : image = self . adjust_contrast ( image , self . contrast_factor ) if self . brightness_delta : image = self . adjust_brightness ( image , self . brightness_delta ) if self . hue_delta or self . saturation_factor : image = cv2 . cvtColor ( image , cv2 . COLOR_BGR2HSV ) #色彩空间转化 if self . hue_delta : image = self . adjust_hue ( image , self . hue_delta ) if self . saturation_factor : image = self . adjust_saturation ( image , self . saturation_factor ) image = cv2 . cvtColor ( image , cv2 . COLOR_BGR2HSV ) #色彩空间转化 image = cv2 . cvtColor ( image , cv2 . COLOR_BGR2RGB ) return image def adjust_saturation ( self , image , factor ) : 调整图片的饱和度 image [ . . . , 1 ] = np . clip ( image [ . . . , 1 ] * factor , 0 , 255 ) return image def adjust_hue ( self , image , delta ) : 调整图片的色度 添加到色调通道的量在-1和1之间的间隔。 如果值超过180,则会旋转这些值。 image [ . . . , 0 ] = np . mod ( image [ . . . , 0 ] + delta * 180 , 180 ) #取余数 return image def adjust_contrast ( self , image , factor ) : 调整一张图像的对比度 mean = image . mean ( axis = 0 ) . mean ( axis = 0 ) return self . _clip ( ( image - mean ) * factor + mean ) def adjust_brightness ( self , image , delta ) : 调整一张图片的亮度 return self . _clip ( image + delta * 255 ) def _clip ( self , image ) : 剪辑图像并将其转换为np.uint8 return np . clip ( image , 0 , 255 ) . astype ( np . uint8 ) def _uniform ( val_range ) : 随机返回值域之间的数值 return np . random . uniform ( val_range [ 0 ] , val_range [ 1 ] ) def _check_range ( val_range , min_val = None , max_val = None ) : 检查间隔是否有效 if val_range [ 0 ] > val_range [ 1 ] : raise ValueError ( 'interval lower bound > upper bound' ) if min_val is not None and val_range [ 0 ] < min_val : raise ValueError ( 'invalid interval lower bound' ) if max_val is not None and val_range [ 1 ] > max_val : raise ValueError ( 'invalid interval upper bound' ) #定义随机视觉效果生成器 def random_visual_effect_generator ( contrast_range = ( 0.9 , 1.1 ) , brightness_range = ( - .1 , .1 ) , hue_range = ( - 0.05 , 0.05 ) , saturation_range = ( 0.95 , 1.05 ) ) : _check_range ( contrast_range , 0 ) _check_range ( brightness_range , - 1 , 1 ) _check_range ( hue_range , - 1 , 1 ) _check_range ( saturation_range , 0 ) def _generate ( ) : while True : yield VisualEffect ( contrast_factor = _uniform ( contrast_range ) , brightness_delta = _uniform ( brightness_range ) , hue_delta = _uniform ( hue_range ) , saturation_factor = _uniform ( saturation_range ) return _generate ( ) if __name__ == "__main__" : path = "C:/Users/Administrator/Desktop/learning_image/lena.jpg" image = np . asarray ( Image . open ( path ) ) visual_effect_generator = random_visual_effect_generator ( contrast_range = ( 0.9 , 1.1 ) , brightness_range = ( - 0.1 , 0.1 ) , hue_range = ( - 0.05 , 0.05 ) , saturation_range = ( 0.95 , 1.05 ) ) #创建生成器 visual_effect = next ( visual_effect_generator ) image = visual_effect ( image ) plt . imshow ( image )

以lena图为例
调整之前
在这里插入图片描述
调整后
在这里插入图片描述

直接上代码# -*- coding: utf-8 -*-"""Created on Thu Apr 23 22:29:54 2020@author: Administrator"""import numpy as npimport cv2from PIL import Imagefrom matplotlib import pyplot as plt#VisualEffec... https://www.tensorflow.org/api_docs/ python /tf/image/random_brightness Adjust the brightness of images by a random factor. 该函数用于 随机 调整 图像的 亮度 。 tf.image.random_brightness( image, max_del...
python opencv调节 图片 亮度 对比度 亮度 调整 是将图像像素的强度整体变大/变小, 对比度 调整 指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度。 创建两个滑动条分别 调整 对比度 亮度 对比度 范围:0 ~ 0.3, 亮度 0 ~ 100)。提示:因为滑动条没有小数,所以可以设置为0 ~ 300,然后乘以0.01 import cv2 import numpy as np
1.Image.open(image_path) 进行 图片 的打开 参数说明:image_path 表示 图片 的路径 2. ImageEnhance.Brightness(image) # 进行 图片 亮度 变化 enhance_image.enhance(0.3) 参数说明:image表示需要进行 亮度 变化的 图片 3. ImageEnhance.Contrast(image) ...
fImg = img.astype(np.float32) fImg = fImg / 255.0 # HLS空间,三个通道分别是: Hue色相、lightness明度、saturation 饱和度 # 通道0是色相、通道
tensorflow图像处理 通过 随机 调整 图像 亮度 对比度 饱和度 /色相,可以衍生出更多的训练样本,减小识别物体不同的大小/方位/色彩等无关因素对图像识别模型的影响.且 调整 顺序不同可以得到不同的处理结果. #!/usr/bin/ python # coding:utf-8 # 图像预处理 import tensorflow as tf import numpy as np impor...
# 映射表 table_b = np.array([((i / 255) * alpha_b + gamma_b) if ((i / 255) * alpha_b + gamma_b) > 0 else 0 for i in range(0, 256)]).astype("uint8") image = cv2.LUT(image, table_b) # 对比度 调整 if contrast != 0: f = 131 * (contrast + 127) / (127 * (131 - contrast)) alpha_c = f gamma_c = 127 * (1 - f) # 映射表 table_c = np.array([((i / 255) * alpha_c + gamma_c) if ((i / 255) * alpha_c + gamma_c) > 0 else 0 for i in range(0, 256)]).astype("uint8") image = cv2.LUT(image, table_c) return image # 读取 图片 img = cv2.imread('test.jpg') # 创建窗口 cv2.namedWindow('image') # 创建滑块 cv2.createTrackbar('Brightness', 'image', 0, 100, lambda x: None) cv2.createTrackbar('Contrast', 'image', 0, 100, lambda x: None) while True: # 获取滑块值 brightness = cv2.getTrackbarPos('Brightness', 'image') - 50 contrast = cv2.getTrackbarPos('Contrast', 'image') - 50 # 调整 亮度 对比度 img_adjust = adjustBrightnessContrast(img, brightness, contrast) # 显示 图片 cv2.imshow('image', img_adjust) # 按下Q键退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放窗口和摄像头 cv2.destroyAllWindows() 您可以按照上述步骤来实现 Python 滑块 调整 图片 亮度 对比度 。希望能对您有所帮助。