一、调整图片亮度:
加载需要的包:
from skimage import data,exposure,img_as_float
from PIL import Image,ImageFilter
使用pillow.Image加载图片之后需要转换格式才能应用函数:
加载图片,转换格式(这个函数只能处理numpy数组格式所以可以使用下面函数转换,也可以转换成numpy数组格式):
figure=Image.open(path) #读取图片
image=img_as_float(figure) #转换成指定格式
调整图片明亮度:
exposure.adjust_gamma(image,系数) 当系数大于一是图像变暗,图像小于一时图像变亮
image=img_as_float(figure)
figure_adjust_low=exposure.adjust_gamma(image,2) #图片调暗
figure_adjust_high=exposure.adjust_gamma(image,0.5) #图片调亮
plt.figure()
plt.subplot(311)
plt.imshow(figure_adjust_low)
plt.subplot(312)
plt.imshow(figure_adjust_high)
plt.subplot(313)
plt.imshow(figure)
plt.show()
效果如下所示:
二、转换图片颜色空间/色调
1.使用opencv(opencv处理后的图片数据为0-255更方便处理,scikit-image处理后数据不方便初始化)
将RGB图片转换为HSV图片
import cv2
figure=Image.open(path)
figure=np.array(figure) #opencv无法处理Image的格式需要转换为numpy格式
figure_pre=cv2.cvtColor(figure,cv2.COLOR_RGB2HSV)
效果如下:
将RGB转换为HLS
figure=Image.open(path)
figure=np.array(figure)
figure_pre=cv2.cvtColor(figure,cv2.COLOR_RGB2HLS)
plt.figure()
plt.subplot(211)
plt.imshow(figure)
plt.subplot(212)
plt.imshow(figure_pre)
plt.show()
效果如下:
将RGB转换为LUV
figure=Image.open(path)
figure=np.array(figure)
figure_pre=cv2.cvtColor(figure,cv2.COLOR_RGB2LUV)
效果如下:
其他转换空间方法:
2.使用scikit_image
一个公式用于多种情况:
其中colorspace可以是下述其中之一
['hsv', 'xyz', 'rgb cie', 'yiq', 'ydbdr', 'rgb', 'yuv', 'ypbpr', 'ycbcr']
image=np.array(figure)
figure_adjust=color.convert_colorspace(image,'RGB','HSV') #其中RGB为初始图像空间,HSV为需
#要转换的空间 如:HSV,GREY,LAB
plt.figure()
plt.subplot(211)
plt.imshow(figure_adjust)
plt.subplot(212)
plt.imshow(figure)
plt.show()
效果如下:
将rgb转换为gray:
from skimage import color
image=np.array(figure)
figure_adjust=color.rgb2gray(image) #转换函数
plt.figure()
plt.subplot(211)
plt.imshow(figure_adjust)
plt.subplot(212)
plt.imshow(figure)
plt.show()
效果如下:
rgb转换为hsv:
image=np.array(figure)
figure_adjust=color.rgb2hsv(image) #转换公式
plt.figure()
plt.subplot(211)
plt.imshow(figure_adjust)
plt.subplot(212)
plt.imshow(figure)
plt.show()
rgb转换为lab:
image=np.array(figure)
figure_adjust=color.rgb2lab(image) #转换公式
plt.figure()
plt.subplot(211)
plt.imshow(figure_adjust)
plt.subplot(212)
plt.imshow(figure)
plt.show()
效果如下: