from PIL import Image (Python 3) import scipy.misc lena = scipy.misc.lena() # Lena 是 512x512 的灰度图像...# 创建与 Lena 宽高相同的 RGBA 图像,全黑色 data = np.zeros((lena.shape[0], lena.shape[1], 4), dtype=np.int8) # 将...data 的不透明度设置为 Lena 的灰度 data[:,:,3] = lena.copy() # 将 data 转成 RGBA 的图像格式,并保存 img = Image.frombuffer(..."RGBA", lena.shape, data, 'raw', "RGBA", 0, 1) img.save('lena_frombuffer.png') # 每个像素都设为 #FC0000FF...from __future__ import print_function import numpy as np import Image import scipy.misc # 获取上一节的第一个图像
我们的处理过程其实就是将原来的图片变成RGBA格式,RGB是红绿蓝三种颜色,这里的A就是透明通道的意思,A的取值范围是从0-255之间变化,当A设置为0时,完全透明,255时完全不透明。...回到我们上面原来的猫图片,只要我们能够将猫图像的圆形区外的所有地方变成完全透明(看不见了),那么整个图片就变成圆形的了。...这里如果自己去计算圆形的边界,圆形外侧全部设置为完全透明,圆形内容不变,一个个像素点去处理,那将会非常麻烦,牛角的就更不用想了。...,传入一张灰度图模式的圆形图片(灰度图是黑白图片,灰度0是显示黑色的,灰度255是显示白色的),猫的圆形外的透明度就被设置成黑色所代表的数值0,而0在透明度中是表示完全透明的,最终猫的圆外就变成透明了,...上面的效果并不是我们想要的,paste除了上面两个参数,还有第三个参数蒙版图像,这里要注意蒙版图像和putalpha的图像有所区别,中间是黑色,边缘是白色;因为蒙版的运行原理是,灰度图黑色时数值是0,表示透明度就是完全透明的意思
分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。 模式“1”为二值图像,非黑即白。但是它每个像素用8个bit表示,0表示黑,255表示白。...在PIL中,从模式“RGB”转换为“L”模式是按照下面的公式转换的: L = R * 299/1000 + G * 587/1000+ B * 114/1000 模式“P”为8位彩色图像,它的每个像素用...模式“RGBA”为32位彩色图像,它的每个像素用32个bit表示,其中24bit表示红色、绿色和蓝色三个通道,另外8bit表示alpha通道,即透明通道。...在PIL中,从模式“RGB”转换为“I”模式是按照下面的公式转换的: I = R * 299/1000 + G * 587/1000 + B * 114/1000 模式“F”为32位浮点灰色图像,它的每个像素用...,并转换成png格式 下面程序从文件名列表(filelist)中读取所有的图像文件,并转换成JPEG格式: from PIL import Image import os for infile in
PIL可以做很多和图像处理相关的事情: 图像归档(Image Archives)。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。...实现这个效果使用的是PIL中的Blend类 Image.blend(image1,image2,alpha) ⇒image 使用给定的两张图像及透明度变量...mask图像作为透明度,插值出一张新的图像。...变量mask图像的模式可以为“1”,“L”或者“RGBA”。所有图像必须有相同的尺寸。...('RGBA') 4#新建一个图片,尺寸与上面的尺寸一样,透明度为0即完全透明 5txt=Image.new('RGBA', im.size, (0,0,0,0)) 6#设置要写文字的字体 7fnt
numpy是一款非常优秀的处理多维数组的Python基础包。在现实中,我们最经常接触的多维数组相关的场景就是图像处理。...本系列使用的照片使用的是RGBA色彩空间模型,即一个像素点,要通过R(Red红色)、G(Green绿色)、B(Blue蓝色)和A(Alpha通道)组成。...一张图片,我们看成是一个像素组成的二维数组; 如果每个像素用RGBA表示,则演变成一个三维数组。只是之前的每个元素变成了一个长度为4的维度。...修改透明度 如果翻译成numpy相关的知识,就是修改数组中第三个维度(RGBA)的第四个位置(A)的值。...代码的第6行,第一个“:”表示所有的第一维度(高),第二个“:”表示所有的第二维度(宽),3表示Alpha通道所在的RGBA中的下标。 这种写法,比逐个遍历数据要方便的多。
,如RGB有三个通道,而灰度图像则只有一个通道 图像实际上是像素数据的矩形图,图像的模式定义了图像中像素的类型和深度,它在图像中定义mode模式的概念,如: 1:1位像素,表示黑和白,占8bit,在图像表示中称为位图...0则代表黑色,都为255则代表白色 RGBA:为带透明蒙版的真彩色,其中的A为alpha透明度,占用4x8位像素 其他的还有打印分色CMYK不是很常用不多做介绍 PIL使用笛卡尔像素坐标系统,图像的坐标从左上角开始...模块的方法 Image类的实例具有以下方法,所有方法都会返回Image类的新实例,并保留生成的图像 im.convert(mode):将图像转换为另一种模式,然后返回新图像 from PIL import...从输入图像中选取最近的像素作为输出像素。它忽略了所有其他的像素 #BILINEAR:双线性滤波。...如果将图像与纯黑色图像相乘,则结果为黑色。
比如:改变图像大小、旋转图像、图像格式转换,转换颜色通道,图像增强,直方图处理,插值和滤波等等。 PIL 是第三方库,使用之前需要先安装。 pip install pillow 2....Tip: 当像素点的 RGB 颜色分量相同时,组合出来的就是灰色。灰色系有 256 阶梯,从 0~255。0 表示黑色,255 表示白色,从0到255 颜色由黑逐渐转向白。...如下代码会抛异常:因为无法将 RGBA 模式的图片以 JPEG 格式保存 from PIL import Image # png 格式的图片有透明通道,其颜色模式是 RGBA. img = Image.open...3 个颜色通道,RGBA 颜色模式的图片有 3 个颜色通道另加 1 个透明度通道。...from PIL import Image dog_img = Image.open("dog.jpg") # 分离颜色通道 r, g, b = dog_img.split() # 修改每一个颜色通道中的像素点的值
这里RGBA各个字母表示的意思是:r 表示red, g 表示gree, b表示blue,a 表示alpha 透明度。一般而言只需要指定RGB即可。如果需要创建一个透明底的图片则需要传入RGBA。...参数:im: 需要被绘画的image对象 mode: 用于颜色值的可选模式,对于RGB图像,此参数可以是RGB或者RGBA(将绘图混合到图像中)。...对于所有其他模式,此参数必须与图像模式相同,如果省略,模式默认是图像的模式。 text方法 在给定的位置上添加文本 参数:xy – 文本的锚点坐标。text – 要绘制的字符串。...对于非 TrueType 字体,将忽略此参数。此参数存在于 Pillow 的早期版本中,但仅在 8.0.0 版中实现。...参考 Pillow官方文档 关于 Image.paste() 透明像素问题【PIL-Python】 源码地址 https://gitee.com/jayxiang31/python_demo/tree/
前言 不久之前写过一篇文章,详细介绍了 PIL 库中的 Image 模块的使用。...曾经学习过、使用过一段时间的 PS,认识 PIL 后,觉得这这玩意太好玩了,有了想使用 PIL 库实现 PS 中的图片特效的想法。 好,现在直接上案例,不另废其它话。 2....from PIL import Image # 打开原图片 fo_img = Image.open("fo.jpg") # 因后续要使用此图片做遮罩,需要透明通道,所以要转换成 RGBA 模式 fo_img...这个效果在 PS 中更容易实现(毕竟人家是专业的图片处理软件)。 几个变化: 反转效果 前面是把佛字图片的白色区域的 a 值设定为 0,则白色区域所对应的春归图片会变成透明。...字符串图片 把图片中的每一像素点用不同的字符串替换,然后保存字符串信息。如下代码中,白色区域的像素点使用“仁”字替换。黑色文字区域的像素点使用“佛”字替换。
就在昨天,几乎所有网站都从彩色页面变成黑白页面,虽然一行 CSS 就可以解决这个问题,但是彩色页面(彩色图)变黑白页面(黑白图)有很多方法,主要有三种:最大值法、平均值法、加权平均值法,下面我就主要讲解这三种算法的具体逻辑...图片数据的格式 在进行图像变换之前,先来简单介绍一下图片在计算机中的数据格式,图像在计算机中的数据格式有很多,详见下表: 格式 说明 1 位图,像素 1 位 L 灰度图,像素 8 位 I 像素 int32...F 像素 float32 P 8 位,映射为其他模式 RGB 真色彩,3 通道 RGBA 4 通道,加透明 CMYK 印刷,4 通道 YCbCr 亮色分离,3 通道 一般情况下,彩色图在计算机中是通过...平均值法 平均值法就是把 RGB 三个元素的值取平均值作为对应像素的灰度值,代码如下: from PIL import Image import numpy as np image_array...其实加权平均值法在 PIL 中有封装好的,对应逻辑和我自己实现的一模一样,权重都是一样的,调用过程如下: from PIL import Image image = Image.open('row_image.jpg
相比我们已经知道应该改什么内容了,那就是修改 HSV 中的 H 值,通过不同的 H 值我们就可以将图片转换为不同的色调了。 具体思路是怎样的呢: •首先获取图像每个像素的的 RGB 色值。...处理透明像素 上面的算法仅仅考虑了 RGB,如果有些图包含了透明像素,上面的程序对于透明像素是无法处理的,最后输出的结果会带有某种颜色的背景。...对于透明像素的处理,我们可以增加一个维度的值,就是 A,即 Alpha 透明度。...所以使用 RGBA 和 HSV 的转换我们就可以实现透明像素的处理了,代码实现如下: import colorsysfrom PIL import Image # 输入文件filename = 'input.png...', (r, g, b, a))# 输出图片image.save('output.png') 在这里就是增加了对透明像素的处理,在图像 convert 和 merge 的时候都使用 RGBA 模式,就可以保留原有图片中的透明像素了
,CMYK,YCbCr,I, F 模式"1"为二值图像,非黑即白。...模式"RGBA"为32位彩色模式,其中24个bit分别表示红色,绿色,蓝色三个通道,另外8个bit 表示alpha通道,即透明通道。...模式“CMYK”为32位彩色图像,它的每个像素用32个bit表示。...在PIL中,从模式"RGB"转换为"I"模式是按照下面的公式转换的:I = R * 299/1000 + G * 587/1000 + B * 114/1000 模式"F"为32位浮点灰色图像,...在PIL中,从模式"RGB"转换为"F"模式是按照下面的公式转换的: F = R * 299/1000+ G * 587/1000 + B * 114/1000 模式"F"与模式"L"的转换公式是一样的
例如,方框元组(3, 1, 9, 6)表示图 19-2 中黑色方框中的所有像素。...不可见的黑色,(0, 0, 0, 0),是在没有指定颜色参数的情况下使用的默认颜色,因此第二个图像具有透明背景;我们把这个 20×20 的透明正方形保存在transparentImage.png。...如果将图像旋转其他角度,图像的原始大小将保持不变。在 Windows 上,黑色背景用于填充旋转产生的任何空隙,如图 19-8 中的所示。在 MacOS 上,透明像素被用于间隙。...为了给这个图像中的像素着色,我们可以使用嵌套的for循环遍历图像上半部分的所有像素 ➌,并使用putpixel()➍ 给每个像素着色。...如果您忘记了第三个参数,Logo中的透明像素将被复制为纯白像素(右)。 类似程序的创意 能够成批合成图像或修改图像大小在许多应用中是有用的。
1.入门知识在探索图像处理的世界之前,了解一些基础知识是非常重要的。色彩和像素是构成数字图像的基石。颜色:在传统的美术中,红、黄、蓝被认为是三原色,它们无法通过混合其他颜色得到。...而在数字世界里,红、绿、蓝(RGB)光的组合形成了我们在屏幕上看到的各种颜色。计算机通过调整这三种颜色的强度来产生不同的颜色,并且可以表示透明度(通过RGBA值,其中A代表Alpha通道)。...(0, 0, 0) 紫色 (128, 0, 128)像素:图像的基本单元,每个像素都有一个特定的位置和颜色值。...像素的集合决定了图像的最终外观。在摄影中,像素数量通常是衡量图像分辨率的一个指标。...2.Pillow库Pillow是Python的一个图像处理库,它是Python Imaging Library (PIL) 的一个更新分支,它支持多种图像文件格式的操作,包括打开、显示、裁剪、缩放、旋转
modes 描述 1 1位像素,黑和白,存成8位的像素 L 8位像素,黑白 P 8位像素,使用调色板映射到任何其他模式 RGB 3× 8位像素,真彩 RGBA 4×8位像素,真彩+透明通道 CMYK 4...×8位像素,颜色隔离 YCbCr 3×8位像素,彩色视频格式 I 32位整型像素 F 32位浮点型像素 读写图像 PIL 模块对目前存在的大多数图片格式都支持,一般使用 Image 模块的 open(...用来表示在原始图像中截取的位置坐标,如box(100,100,200,200)就表示在原始图像中以左上角为坐标原点,截取一个100*100(像素为单位)的图像,为方便理解,如下为示意图box(b1,a1...ImageEnhance模块的接口所有的增强类都实现了一个通用的接口,包括一个方法: enhancer.enhance(factor) ⇒ image 该方法返回一个增强过的图像。...增强因子为0.0将产生黑色图像;为1.0将保持原始图像。
安装与基础使用 ---- 注意:如果图像路径中存在中文,则会加载到的图像则是None,需要换一种方式: # 加载 img = cv2.imdecode(np.fromfile(path, dtype=...维度与通道 ---- 平时看起来图像是二维的,有宽和高,但是实际上,图像是三维的(指的是数据结构): 高度和宽度比较好理解,对应的就是一个像素,但是一个像素通常不是一个单一的值,例如对于普通的彩色图像...HSV:一种特殊的颜色空间,之前提取印章的时候使用过(这个颜色空间可以方便的分离出红色的像素)。 GRAY:灰度空间。 RGBA:带透明度的颜色空间,通常是png图像。...前面三种的通道数都是3,灰度空间的通道数只有1(只有黑白灰),而RGBA是4个通道(在RGB的基础上增加了一个通道,用来表示透明度)。...和我们直觉理解不一样的一点是:白色的值是255,而黑色的只是0,不要混淆了。 上面这个图可以清晰地看到对于普通的三通道的图像,一个像素点是包含三个值的。 待续。。。。。。
相比我们已经知道应该改什么内容了,那就是修改 HSV 中的 H 值,通过不同的 H 值我们就可以将图片转换为不同的色调了。 具体思路是怎样的呢: •首先获取图像每个像素的的 RGB 色值。...处理透明像素 上面的算法仅仅考虑了 RGB,如果有些图包含了透明像素,上面的程序对于透明像素是无法处理的,最后输出的结果会带有某种颜色的背景。...所以使用 RGBA 和 HSV 的转换我们就可以实现透明像素的处理了,代码实现如下: import colorsys from PIL import Image # 输入文件 filename = '...', (r, g, b, a)) # 输出图片 image.save('output.png') 在这里就是增加了对透明像素的处理,在图像 convert 和 merge 的时候都使用 RGBA 模式,...就可以保留原有图片中的透明像素了。
8位像素,使用调色板映射到任何其他模式RGB 3× 8位像素,真彩RGBA 4×8位像素,真彩+透明通道CMYK 4×8位像素,颜色隔离...如果不对变量mode赋值,该方法将会选择一种模式,在没有调色板的情况下,使得图像和调色板中的所有信息都可以被表示出来。...八、Info类im.info ⇒ dictionary存储图像相关数据的字典。文件句柄使用该字典传递从文件中读取的各种非图像信息。...变量mask图像的模式可以为“1”,“L”或者“RGBA”。所有图像必须有相同的尺寸。...变量mask对应图像的其他值,将对两张图像的值进行透明融合,如果变量image对应的为“RGBA”图像,即粘贴的图像模式为“RGBA”,则alpha通道被忽略。
**** P:8位像素,使用调色板映射到其他模式。 RGB:3×8位像素,为真彩色。 **** RGBA:4×8位像素,有透明通道的真彩色。 CMYK:4×8位像素,颜色分离。...从输入图像中选取最近的像素作为输出像素。它忽略了所有其他的像素。 BILINEAR:双线性滤波。在输入图像的2×2矩阵上进行线性插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。...对所有可以影响输出像素的输入像素进行高质量的重采样滤波,以计算输出像素值。在当前的PIL版本中,这个滤波器只用于改变尺寸和缩略图方法。...注意:在当前的PIL版本中,ANTIALIAS滤波器是下采样(例如,将一个大的图像转换为小图)时唯一正确的滤波器。...变量table为图像的每个通道设置256个值。如果使用变量function,其对应函数应该有一个参数。这个函数将对每个像素值使用一次,结果表格将应用于图像的所有通道。
图2 前三个整数值(如上图2左侧所示)是RGB(红色、绿色和蓝色)值,PNG数组中的第四个整数称为“alpha通道”,它控制透明度(因此命名为“RGBA”)。...我们可以通过将图像上所有白色像素的alpha通道设置为0(透明)来“删除”白色背景。...换句话说,对于每个RGB值为[255,255,255,180]的像素,我们将alpha通道设置为0,以使像素完全透明。 由于我们已经将图像的RGBA值放入Numpy数组中,因此操纵颜色很容易。...为了找到所有白色的像素,可以创建一个掩码,其中白色像素=True,否则为False。下面的代码检查图像的每个像素的所有R、G和B值是否等于255。...这一步有效地将所有白色像素变为完全透明。 图5 可以使用PIL库的Image.fromarray()方法将NumPy数组转换回图像文件。
领取专属 10元无门槛券
手把手带您无忧上云