Image

本文介绍图像处理基础知识,包括矩阵表示、坐标系统及滤波器原理,并通过实例演示如何利用PIL库进行图像处理任务,如尺寸调整、旋转等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础知识

矩阵概念

一个由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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值