图像的变换效果

图像的数组表示

图像的RGB色彩模式

图像一般使用RGB色彩模式,即每个像素点的颜色由红®、绿(G)、蓝(B)组成。
RGB三个颜色通道的变化和叠加得到各种颜色,其中

• R 红色,取值范围,0‐255
• G 绿色,取值范围,0‐255
• B 蓝色,取值范围,0‐255

RGB形成的颜色包括了人类视力所能感知的所有颜色。
图像是由一个像素组成的二维矩阵,每个元素是一个RGB值,且为三个字节,每个字节分别对应RGB中的一个。RGB值:(R,G,B)

PIL库(Python Image Library)

PIL库是一个具有强大图像处理能力的第三方库,
在命令行下的安装方法: pip install pillow
from PIL import Image Image是PIL库中代表一个图像的类(对象)

In [1]: from PIL import Image
In [2]: import numpy as np
In [4]: im = np.array(Image.open("D:/MySource/日常乱七八糟/2020大数据课程.png"))
	#此处利用open属性将图片打开,利用array将图片转化为数组
In [5]: print(im.shape,im.dtype)
(829, 2536, 4) uint8	#打印出图像的shape和dtype
#		 图像是一个三维数组,维度分别是高度、宽度、像素RGB值。
#		 有时候结果可能显示第三个维度的值为3,这里为4。下述解释:
#		 色彩模式,如:当图像为RGB模式时,通道就会产生三个颜色通道和一个混合通道,
#		 混合通道位于最上方,下面依次是红、绿、蓝通道,当把图像转为CMYK模式时,
#		 通道总数就是五个,第一个是混合通道,下面依次是青、品、黄、黑四个通道,如果转为灰度模式,那么就只有一个通道了!

In [6]: im.shape
Out[6]: (829, 2536, 4)

In [7]: im.dtype
Out[7]: dtype('uint8')

图像的变换

读入图像后,获得像素RGB值,修改后保存为新的文件。

In [8]: from PIL import Image

In [9]: import numpy as np

In [10]: im_1 = np.array(Image.open("D:\MySource\日常乱七八糟\故宫.jfif"))

In [11]: im_1.shape
Out[11]: (2592, 3872, 3)

In [12]: im_1.dtype
Out[12]: dtype('uint8')

In [13]: b = [255,255,255] - im_1
In [15]: im_2 = Image.fromarray(b.astype('uint8'))
In [17]: im_2.save("D:\MySource\日常乱七八糟\故宫2.jfif")

补色的效果

In [19]: from PIL import Image
In [20]: import numpy as np
In [21]: a = np.array(Image.open("D:\MySource\日常乱七八糟\故宫.jfif").convert('L'))
	#.convert():PIL有九种不同模式: 1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。
	#'L'为灰度图像,每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
	
  #转换公式:L = R * 299/1000 + G * 587/1000+ B * 114/1000。
In [22]: b = 255-a
In [23]: im = Image.fromarray(b.astype('uint8'))
In [24]: im.save("D:\MySource\日常乱七八糟\故宫3.jfif")

在这里插入图片描述

In [25]: from PIL import Image

In [26]: import numpy as np

In [27]: a = np.array(Image.open("D:\MySource\日常乱七八糟\故宫.jfif").convert('L'))

In [28]: d = 255 * (a/255) ** 2

In [30]: im = Image.fromarray(d.astype('uint8'))
In [31]: im.save("D:\MySource\日常乱七八糟\故宫4.jfif")

在这里插入图片描述

In [32]: from PIL import Image
In [33]: import numpy as np

In [34]: a = np.array(Image.open("D:\MySource\日常乱七八糟\故宫.jfif").convert('L'))

In [35]: c = (100/255)*a + 150	#区间变换

In [37]: im = Image.fromarray(c.astype('uint8'))

In [38]: im.save("D:\MySource\日常乱七八糟\故宫5.jfif")

在这里插入图片描述

图像的手绘效果

略。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值