操作图像1-计算机图像基础

来源:互联网 发布:上海图书馆知乎 编辑:程序博客网 时间:2024/05/25 01:36

如果你有一台数码相机,或者只是将照片从手机上传到’qq空间’,微信朋友圈等…
你可能知道如何使用基本的图形软件,如Microsoft Paint 或Paintbrush,甚至更高级的应用程序,如Adobe Photoshop。
但是,如果需要编辑大量的图像,手工编辑可能是漫长,估操的工作。
python3请用pillow是一个第三方python模块,用于处理图像文件。该模块包含一些函数,可以很容易地剪裁图像、调整图像大小,
以及编辑图像的内容。可以像Micosoft paint或Adobe Photoshop一样处理图像,有了这种能力,python可以轻松地自动编辑成千上万的图像。


计算图像基础

为了处理图像, 需要了解计算机如何处理图像中的颜色和坐标的基本知识,以及如何在pillow中处理颜色和坐标。但是在继续探讨之前,先要安装pillow模块。

颜色和RGBA值
计算机程序通常将图片的颜色表示为RGBA值。RGBA值是一组数字,指定颜色中的红,绿,蓝和alpha(透明度)的值。
这些值是从0-255最高的整数。这些RGBA值分配单个像素,像素是计算机屏幕上能显示一种颜色的最小点(屏幕上有几百万个像素)。
像素的RGBA设置准确的告诉它应该显示哪种颜色的色彩。图像也有一个alpha值,用于生成RGBA值。如果图像显示在屏幕上,遮住了背景图像或桌面墙纸,alpha 值决定了 “透过” 这个图像的像素,你可以看到多少背景。
在pillow中,RGBA值表示为4个整数值的元组。例如,红色表示为(255,0,0,255)。这种颜色中红的值为最大,没有绿和蓝,并且alpha值最大,这意味着它完全不透明。绿色表示为(0,255,0,255),蓝色是(0,0,255,255)。白色是各种颜色的组合,即(255,255,255,255),而黑色没有任何颜色,是(0,0,0,255)。
如果颜色的alpha值为0,不论RGBA值是什么,该颜色是不可见的,毕竟,不可见的红色看起来就像不可见的黑色一样。
Pillow使用了HTML 使用的标准颜色名称。

这里写图片描述

Pillow提供ImageColor.getcolor()函数,所以不必记住想用的颜色的RGBA值。

该函数接受一个颜色名称字符串作为第一参数,字符串”RGBA”作为第二个参数,返回一个RGBA元组。
要了解该函数的工作方式,就在交互式环境中输入以下代码:
这里写图片描述

首先要从PIL导入ImageColor模块 (而不是从pillow,稍后就会明白为什么)。

传递给ImageColor.getcolor()的颜色名称字符串是不区分大小写的,所以传入’red’和传入’RED’将得到同样的RGBA元组。还可以传递更多不常见的颜色名称,如’chocolate’和’CormflowerBlue‘’。
Pillow支持大量的颜色名称,从’aliceblue’到’whitesmoke’。

https://www.nostarch.com/automatestuff/
的资源中。可以找到超过100种标准颜色名称的完整列表。


2.坐标和BOX元组
图像像素用X和Y坐标指定,分别指定像素在图像中的水平和垂直位置。原点是位于图像左上角的像素,用符号(0,0)指定。第一0表示X坐标,它以原点处为0,从左至右增加。第二个0表示Y坐标,它以原点处为0,从上至下增加。这值得重复一下:y坐标向下增加,你可能还记得数学课上使用的y坐标,与此相反。

这里写图片描述

                                    CMYK和RGB着色

小学时学过,混合 红 黄 蓝 三种颜料可以得到其他颜色。例如,可以混合蓝色和黄色,得到绿色颜料。这就是所谓的减色模型,它适用于染料、油墨和颜料。这就是为什么彩色打印机有的CMYK墨盒:青色(蓝色)、品红色(红色)、黄色和黑色墨水可以混合在一起,形成任何颜色。
然而,光的物理使用所谓的加色模型。如果组合光(例如由计算机屏幕发出的光),红,绿,蓝光可以组合形成其他颜色。这就是为什么在计算机程序中使用RGB值表示颜色。

许多Pillow函数和方法需要一个矩形元组参数。这意味着Pillow需要一个四个整坐标的元组,表示图像中的一个矩形区域。四个整数按顺序分别是:    左:  该矩形的最左边X坐标。    顶:  该矩形的顶边的Y坐标。    右: 该矩形的最右边右面一个像素的X坐标。此整数必须比左边的整数大。    底: 该矩形的底边下面一个像素的Y坐标。此整数必须比顶边的整数大。注意,该矩形包括左和顶坐标,直到但不包括右和底坐标。例如 矩形元组(3,1,9,6) 

这里写图片描述

                                        由矩形元组(3,1,9,6)表示的区域

0 0
原创粉丝点击