基础知识
矩阵概念
一个由m(行)*n(列)组成的数组
模式概念
由颜色多少区分为颜色,一般使用rgp构图,cmy印刷
坐标系统
图像处理、立体视觉等等方向常常涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系
世界坐标系--- 描述相机位置 空间
相机坐标系--- 描述相机光心位置 空间
图像坐标系-- 光心为中点 平面
像素坐标系 --- 左上角为顶点 平面
参考https://blog.youkuaiyun.com/chentravelling/article/details/53558096
滤波
NEAREST:最近滤波。从输入图像中选取最近的像素作为输出像素。它忽略了所有其他的像素。
BILINEAR:双线性滤波。在输入图像的2x2矩阵上进行线性插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。
BICUBIC:双立方滤波。在输入图像的4x4矩阵上进行立方插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。
ANTIALIAS:平滑滤波。这是PIL 1.1.3版本中新的滤波器。对所有可以影响输出像素的输入像素进行高质量的重采样滤波,以计算输出像素值。在当前的PIL版本中,这个滤波器只用于改变尺寸和缩略图方法。
注意:在当前的PIL版本中,ANTIALIAS滤波器是下采样(例如,将一个大的图像转换为小图)时唯一正确的滤波器。BILIEAR和BICUBIC滤波器使用固定的输入模板,用于固定比例的几何变换和上采样是最好的。
参考 https://blog.youkuaiyun.com/icamera0/article/details/50647465
图像(iamge 组成)
有三个通道 红,绿,蓝 通道是使用矩阵表示
有很多模式常用的 L(简单理解为灰度模式)黑白颜色,rgp红绿蓝,CMYK C(青)、M(品红)、Y(黄)和k(黑)组成
size 图像大小,像素密度.
坐标系统,简单理解为像素坐标系
调色板实际上是一个有256个表项的RGB颜色表,颜色表的每项是一个24位的RGB颜色值。 调色板模式 ("P")使用一个颜色调色板为每个像素定义具体的颜色值
信息 像元的属性类型或量值所提供的信息。使用info属性可以为一张图片添加一些辅助信息。这个是字典对象。加载和保存图像文件时,多少信息需要处理取决于文件格式。
滤波器 对于将多个输入像素映射为一个输出像素的几何操作
注:系统库比较陈旧,一般使用pillow,pillow依托于Image库,现在支持python3
import os
from PIL import Image, ImageDraw, ImageFont
path = "~/下载"
image1 = os.path.join(path,'timg.jpeg')
ttf = os.path.join(path,'eRQCBJr9.ttf')
im = Image.open(image1)
print im.format #属性
print im.size #像素大小,也可以看成尺寸
print im.palette #
print im.info #于图像无关的信息
#模式转换
l = im.convert('L').show()
#设置大小
size = im.resize((128,128)).show()
#旋转
rotate = im.rotate(45).show()
#剪切
box = (100,100,400,400) #(左,上,右,下)
region = im.crop(box)
#旋转并复制回去
region = region.transpose(Image.ROTATE_180)
im.paste(region,box)
#创建图片
word = "Hello word"
#创建图片
img = Image.new('RGBA',(1024, 768), (255, 255, 255))
#修改图片
draw = ImageDraw.Draw(img)
#划线
draw.line([100,100,100,600],fill = 10)
draw.line([(100,100),600,100],fill = 128)
draw.line([(600,100),(600,600)],"black")
draw.line((100,600,600,600),fill = "yellow")
img.show()
#使用默认字体
draw.text([300,350],word,"red")
#引入字体
ft = ImageFont.truetype(ttf, 20)
draw.text((10, 10), word, font = ft, fill = 'black')
img.show()